Created
July 12, 2020 00:10
-
-
Save flschweiger/e34783f72190a9233ebee71a3d595193 to your computer and use it in GitHub Desktop.
A Homebrew formula for the Flutter SDK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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