-
Notifications
You must be signed in to change notification settings - Fork 6
/
fvm.rb
75 lines (60 loc) · 2.06 KB
/
fvm.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
require "yaml"
class Fvm < Formula
desc "Simple cli to manage Flutter SDK versions per project"
homepage "https://github.com/leoafarias/fvm"
url "https://github.com/leoafarias/fvm/archive/3.0.1.tar.gz"
sha256 "c974e5747d4f0b163327af4022b45ef1dcf5e5af781dd5fade9619f59a447424"
license "MIT"
# Determine architecture and set the Dart SDK resource accordingly
dart_sdk_url, dart_sdk_sha = if Hardware::CPU.intel?
["https://storage.googleapis.com/dart-archive/channels/stable/release/3.2.6/sdk/dartsdk-macos-x64-release.zip",
"97661f20230686381f4fc5b05a63c6b5d5abc9570bf93ad4e5fc09309cd98517"]
elsif Hardware::CPU.arm?
["https://storage.googleapis.com/dart-archive/channels/stable/release/3.2.6/sdk/dartsdk-macos-arm64-release.zip",
"2e04c91039f9cc05b2e93ce788aa1ce08bc4df5b50c84d6b4e21ba2b2538adb6"]
end
resource "dart-sdk" do
url dart_sdk_url
sha256 dart_sdk_sha
end
def install
# Resource installation for Dart SDK
resource("dart-sdk").stage do
libexec.install Dir["*"] # Assumes Dart SDK zip layout matches what's expected
end
ENV["PUB_ENVIRONMENT"] = "homebrew:fvm"
# Adjust paths to use the vendored Dart SDK
dart = libexec/"bin/dart"
system dart, "pub", "get"
if Hardware::CPU.is_64_bit?
_install_native_executable(dart)
else
_install_script_snapshot(dart)
end
chmod 0555, "#{bin}/fvm"
end
test do
system "false"
end
private
def _version
@_version ||= YAML.safe_load(File.read("pubspec.yaml"))["version"]
end
def _install_native_executable(dart)
system dart, "compile", "exe", "-Dversion=#{_version}",
"bin/main.dart", "-o", "fvm"
bin.install "fvm"
end
def _install_script_snapshot(dart)
system dart, "compile", "jit-snapshot",
"-Dversion=#{_version}",
"-o", "main.dart.app.snapshot",
"bin/main.dart"
lib.install "main.dart.app.snapshot"
cp dart, lib
(bin/"fvm").write <<~SH
#!/bin/sh
exec "#{lib}/dart" "#{lib}/main.dart.app.snapshot" "$@"
SH
end
end