Skip to content

Instantly share code, notes, and snippets.

@flschweiger
Created July 12, 2020 00:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save flschweiger/e34783f72190a9233ebee71a3d595193 to your computer and use it in GitHub Desktop.
Save flschweiger/e34783f72190a9233ebee71a3d595193 to your computer and use it in GitHub Desktop.
A Homebrew formula for the Flutter SDK
class Flutter < Formula
desc "Google’s UI toolkit for mobile, web, and desktop from a single codebase"
homepage "https://flutter.dev"
url "https://storage.googleapis.com/flutter_infra/releases/releases_macos.json"
version "sdk"
require 'json'
bottle :unneeded
def install
puts "\n📡 Retrieving latest stable release...\n\n"
releases_json = `curl -H "Flutter SDK Homebrew" https://storage.googleapis.com/flutter_infra/releases/releases_macos.json`
data = JSON.parse releases_json
base_url = data["base_url"]
current_stable = data["current_release"]["stable"]
releases = data["releases"]
result = nil
releases.each do |release|
if release["hash"] == current_stable
result = release
break
end
end
puts "\n🎯 Found version #{result["version"]} - downloading...\n\n"
`curl #{base_url}/#{result["archive"]} -L -o flutter.zip`
puts "\n📦 Unpacking files...\n\n"
`bsdtar --strip-components=1 -xvf flutter.zip`
puts "\n🚧 Installing...\n"
prefix.install Dir["packages",".git*"]
bin.install Dir["bin/*"]
end
def post_install
puts "\n👮‍ Updating cache folder permissions..."
chmod "u+rw", Dir["#{prefix}/bin/cache/", "#{prefix}/bin/cache/*"]
puts "\n🎉‍ Flutter successfully installed! 👉 You may want to run flutter doctor to complete the Flutter SDK setup.\n\n"
end
test do
system bin/"flutter", "--help"
system bin/"flutter", "create test_app"
assert_predicate testpath/"test_app.iml", :exist?
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment