From b556d26a56b8d6f35d3a8f1bcc9e378ecc35e831 Mon Sep 17 00:00:00 2001 From: flat-data Date: Thu, 18 Jul 2024 01:31:40 +0000 Subject: [PATCH 01/30] Flat: latest data (2024-07-18T01:31:40.880Z) { "date": "2024-07-18T01:31:40.880Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 790, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 395, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 394, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 0caf51de..439cba88 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -3,9 +3,19 @@ "current_release": { "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "761747bfc538b5af34aa0d3fac380f1bc331ec49" + "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b0850beeb25f6d5b10426284f506557f66181b36", + "channel": "stable", + "version": "3.22.3", + "dart_sdk_version": "3.4.4", + "dart_sdk_arch": "x64", + "release_date": "2024-07-18T01:08:53.789813Z", + "archive": "stable/linux/flutter_linux_3.22.3-stable.tar.xz", + "sha256": "9c5f70ba118b9163552144901a2efd91d40b22a68a04e67271d6a5ad936e8368" + }, { "hash": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "channel": "beta", diff --git a/releases_macos.json b/releases_macos.json index 74fec1d8..6b201fe1 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -3,9 +3,29 @@ "current_release": { "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "761747bfc538b5af34aa0d3fac380f1bc331ec49" + "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b0850beeb25f6d5b10426284f506557f66181b36", + "channel": "stable", + "version": "3.22.3", + "dart_sdk_version": "3.4.4", + "dart_sdk_arch": "x64", + "release_date": "2024-07-18T00:59:12.389682Z", + "archive": "stable/macos/flutter_macos_3.22.3-stable.zip", + "sha256": "b30b28ad6dd5ae1a6aefa23ff72d2418ef5e378a79bc55f7d8d5ba241416acbf" + }, + { + "hash": "b0850beeb25f6d5b10426284f506557f66181b36", + "channel": "stable", + "version": "3.22.3", + "dart_sdk_version": "3.4.4", + "dart_sdk_arch": "arm64", + "release_date": "2024-07-18T00:55:41.845863Z", + "archive": "stable/macos/flutter_macos_arm64_3.22.3-stable.zip", + "sha256": "130f14d063e7cbe3fb7e982f6726a9a4cfa19164850119fa6bdd2875589ba70e" + }, { "hash": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "channel": "beta", diff --git a/releases_windows.json b/releases_windows.json index cf63dff2..6e086360 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -3,9 +3,19 @@ "current_release": { "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "761747bfc538b5af34aa0d3fac380f1bc331ec49" + "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b0850beeb25f6d5b10426284f506557f66181b36", + "channel": "stable", + "version": "3.22.3", + "dart_sdk_version": "3.4.4", + "dart_sdk_arch": "x64", + "release_date": "2024-07-18T01:15:44.215253Z", + "archive": "stable/windows/flutter_windows_3.22.3-stable.zip", + "sha256": "fd7e3e4f4484a8608866bdb12d82051d34f525f80710e87ecae84f5104fc264d" + }, { "hash": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", "channel": "beta", From c63e76e22b745eaba995a365f8de001d73dd4ebc Mon Sep 17 00:00:00 2001 From: flat-data Date: Wed, 24 Jul 2024 19:05:04 +0000 Subject: [PATCH 02/30] Flat: latest data (2024-07-24T19:05:04.531Z) { "date": "2024-07-24T19:05:04.531Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 860, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 430, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 429, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 439cba88..c5a6550d 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", + "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "channel": "beta", + "version": "3.24.0-0.1.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-24T18:53:36.802293Z", + "archive": "beta/linux/flutter_linux_3.24.0-0.1.pre-beta.tar.xz", + "sha256": "0ceb259e1afd3f656341cc7f499e362e10f3636f93388a07471dfc5ae3e7b70a" + }, { "hash": "b0850beeb25f6d5b10426284f506557f66181b36", "channel": "stable", diff --git a/releases_macos.json b/releases_macos.json index 6b201fe1..7bbb2f12 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -1,11 +1,31 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", + "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "channel": "beta", + "version": "3.24.0-0.1.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-24T18:45:14.329006Z", + "archive": "beta/macos/flutter_macos_3.24.0-0.1.pre-beta.zip", + "sha256": "ac2fd6ee36d4a15890d9c991e400efe3adadb07b31398821fe3d41e4a9a5887a" + }, + { + "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "channel": "beta", + "version": "3.24.0-0.1.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.1.beta)", + "dart_sdk_arch": "arm64", + "release_date": "2024-07-24T18:39:14.339115Z", + "archive": "beta/macos/flutter_macos_arm64_3.24.0-0.1.pre-beta.zip", + "sha256": "6da133627361ddf47ed6030bedab0aa7b3bebfcbd97d5ffe517e29d0f0d899dd" + }, { "hash": "b0850beeb25f6d5b10426284f506557f66181b36", "channel": "stable", diff --git a/releases_windows.json b/releases_windows.json index 6e086360..4454d01c 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "2feea7a4071e25c1e3aac9c17016531bc4442f2a", + "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "channel": "beta", + "version": "3.24.0-0.1.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-24T18:56:18.297979Z", + "archive": "beta/windows/flutter_windows_3.24.0-0.1.pre-beta.zip", + "sha256": "a9dcd4150c67ceee454583f9cc5b639059703480f11aab5e8b4268f9cf47bd30" + }, { "hash": "b0850beeb25f6d5b10426284f506557f66181b36", "channel": "stable", From 4886d17ebbfbcc2e479960ac7cd3d1c100aa7323 Mon Sep 17 00:00:00 2001 From: cyan Date: Sat, 27 Jul 2024 21:00:22 +0200 Subject: [PATCH 03/30] fix: unsupported architecture on arm64 (#747) --- scripts/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install.sh b/scripts/install.sh index 474f6957..69aec862 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -18,7 +18,7 @@ esac case "$ARCH" in x86_64) ARCH='x64' ;; - arm64) ARCH='arm64' ;; + arm64|aarch64) ARCH='arm64' ;; armv7l) ARCH='arm' ;; *) log_message "Unsupported architecture"; exit 1 ;; esac From c6aca3185fabe6101cefbc6d499fb62616fa17e1 Mon Sep 17 00:00:00 2001 From: Michael Martel Date: Sat, 27 Jul 2024 21:00:47 +0200 Subject: [PATCH 04/30] Add tags for Docker deployment (#739) Co-authored-by: Michael Martel --- .github/workflows/deploy_docker.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy_docker.yml b/.github/workflows/deploy_docker.yml index c1ecaa4c..a5f693fe 100644 --- a/.github/workflows/deploy_docker.yml +++ b/.github/workflows/deploy_docker.yml @@ -32,4 +32,5 @@ jobs: with: file: ./.docker/Dockerfile push: true + tags: leoafarias/fvm:latest \ No newline at end of file From ead255579ae5c8eec2398f23d1b557ec8fdee402 Mon Sep 17 00:00:00 2001 From: flat-data Date: Tue, 30 Jul 2024 10:05:34 +0000 Subject: [PATCH 05/30] Flat: latest data (2024-07-30T10:05:34.101Z) { "date": "2024-07-30T10:05:34.101Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 860, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 430, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 429, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index c5a6550d..434b6786 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "channel": "beta", + "version": "3.24.0-0.2.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.2.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-30T09:30:23.796630Z", + "archive": "beta/linux/flutter_linux_3.24.0-0.2.pre-beta.tar.xz", + "sha256": "c1ef97d0c362a2df4152c27653c447aab2e5d933c1ddacee39ab7a5a8f1f019b" + }, { "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "channel": "beta", diff --git a/releases_macos.json b/releases_macos.json index 7bbb2f12..625db793 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -1,11 +1,31 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "channel": "beta", + "version": "3.24.0-0.2.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.2.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-30T09:25:57.543874Z", + "archive": "beta/macos/flutter_macos_3.24.0-0.2.pre-beta.zip", + "sha256": "01b79258761139133be2a33d5b8bf4a7243d59cfc33bc1497a347643045e1206" + }, + { + "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "channel": "beta", + "version": "3.24.0-0.2.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.2.beta)", + "dart_sdk_arch": "arm64", + "release_date": "2024-07-30T09:21:42.932892Z", + "archive": "beta/macos/flutter_macos_arm64_3.24.0-0.2.pre-beta.zip", + "sha256": "97314140fabf2a10a0d9fe2024325c4e2e5164fd1507fac16dcdb8074130757d" + }, { "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "channel": "beta", diff --git a/releases_windows.json b/releases_windows.json index 4454d01c..57608a91 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", + "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "b0850beeb25f6d5b10426284f506557f66181b36" }, "releases": [ + { + "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "channel": "beta", + "version": "3.24.0-0.2.pre", + "dart_sdk_version": "3.5.0 (build 3.5.0-323.2.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-07-30T09:40:40.260872Z", + "archive": "beta/windows/flutter_windows_3.24.0-0.2.pre-beta.zip", + "sha256": "3ab5b5cb9bc47168059b2ea5ed33548c9cb55590541cdee0d9325f5dea243292" + }, { "hash": "b864805a681ae6bb7d7f6cafb7a5a21489819bcf", "channel": "beta", From 614e440438633432525ed068f97e430c26ed47bd Mon Sep 17 00:00:00 2001 From: flat-data Date: Tue, 6 Aug 2024 18:07:47 +0000 Subject: [PATCH 06/30] Flat: latest data (2024-08-06T18:07:47.720Z) { "date": "2024-08-06T18:07:47.720Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 391, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 395, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 394, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 12 +++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 434b6786..297233eb 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -3,9 +3,19 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "b0850beeb25f6d5b10426284f506557f66181b36" + "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" }, "releases": [ + { + "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "channel": "stable", + "version": "3.24.0", + "dart_sdk_version": "3.5.0", + "dart_sdk_arch": "x64", + "release_date": "2024-08-06T17:48:18.363257Z", + "archive": "stable/linux/flutter_linux_3.24.0-stable.tar.xz", + "sha256": "d52a5d12f17d8bcf868d1ccc01fe0f7ffb05b53d9628aa21b07a18f9d33621f2" + }, { "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "channel": "beta", diff --git a/releases_macos.json b/releases_macos.json index 625db793..d34cfae1 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -3,9 +3,19 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "b0850beeb25f6d5b10426284f506557f66181b36" + "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" }, "releases": [ + { + "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "channel": "stable", + "version": "3.24.0", + "dart_sdk_version": "3.5.0", + "dart_sdk_arch": "x64", + "release_date": "2024-08-06T17:39:54.402003Z", + "archive": "stable/macos/flutter_macos_3.24.0-stable.zip", + "sha256": "94ab73b88a4a996c4eb930644838d0863918cbc4a039a8144ccafe2e1cacd304" + }, { "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "channel": "beta", diff --git a/releases_windows.json b/releases_windows.json index 57608a91..17def8e6 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -3,9 +3,19 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "b0850beeb25f6d5b10426284f506557f66181b36" + "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" }, "releases": [ + { + "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "channel": "stable", + "version": "3.24.0", + "dart_sdk_version": "3.5.0", + "dart_sdk_arch": "x64", + "release_date": "2024-08-06T17:49:54.043144Z", + "archive": "stable/windows/flutter_windows_3.24.0-stable.zip", + "sha256": "68dbcb68b3a193a67f69924bf9fa48e8e34ec8ca942dea912d20f9106d07a9b9" + }, { "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "channel": "beta", From 17755f195a5744322842d84a5a246200a4e1d89f Mon Sep 17 00:00:00 2001 From: flat-data Date: Tue, 6 Aug 2024 20:05:12 +0000 Subject: [PATCH 07/30] Flat: latest data (2024-08-06T20:05:12.523Z) { "date": "2024-08-06T20:05:12.523Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 400, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" } ] } --- releases_macos.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/releases_macos.json b/releases_macos.json index d34cfae1..abd65651 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -16,6 +16,16 @@ "archive": "stable/macos/flutter_macos_3.24.0-stable.zip", "sha256": "94ab73b88a4a996c4eb930644838d0863918cbc4a039a8144ccafe2e1cacd304" }, + { + "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "channel": "stable", + "version": "3.24.0", + "dart_sdk_version": "3.5.0", + "dart_sdk_arch": "arm64", + "release_date": "2024-08-06T17:39:54.402003Z", + "archive": "stable/macos/flutter_macos_arm64_3.24.0-stable.zip", + "sha256": "3c443985c9cda5f6959a274caddfeb38e11777fc8ed8a69ae700a1485e6dd258" + }, { "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "channel": "beta", @@ -6563,4 +6573,4 @@ "sha256": "f063bd7fe3194865a832c204586c25d6155d8164b95949a5d1fd3426beec6e5c" } ] -} \ No newline at end of file +} From 9df7af25f849cf2f977e382be7497bb2a6ab4575 Mon Sep 17 00:00:00 2001 From: flat-data Date: Wed, 21 Aug 2024 17:05:16 +0000 Subject: [PATCH 08/30] Flat: latest data (2024-08-21T17:05:16.377Z) { "date": "2024-08-21T17:05:16.377Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 789, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 395, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 394, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 36 ++++++++++++++++++++++++++++-------- releases_windows.json | 12 +++++++++++- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 297233eb..05c054d8 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -3,9 +3,19 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" + "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ + { + "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", + "channel": "stable", + "version": "3.24.1", + "dart_sdk_version": "3.5.1", + "dart_sdk_arch": "x64", + "release_date": "2024-08-21T16:24:33.738849Z", + "archive": "stable/linux/flutter_linux_3.24.1-stable.tar.xz", + "sha256": "32daf9d5a8e430f57fb139921400c7ecf34e4e7e404818ac55658a5a0eaa28f0" + }, { "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", "channel": "stable", diff --git a/releases_macos.json b/releases_macos.json index abd65651..ab30f9af 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -3,18 +3,28 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" + "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ { - "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", "channel": "stable", - "version": "3.24.0", - "dart_sdk_version": "3.5.0", + "version": "3.24.1", + "dart_sdk_version": "3.5.1", "dart_sdk_arch": "x64", - "release_date": "2024-08-06T17:39:54.402003Z", - "archive": "stable/macos/flutter_macos_3.24.0-stable.zip", - "sha256": "94ab73b88a4a996c4eb930644838d0863918cbc4a039a8144ccafe2e1cacd304" + "release_date": "2024-08-21T16:18:07.386639Z", + "archive": "stable/macos/flutter_macos_3.24.1-stable.zip", + "sha256": "8475e6b64c0f4847a6285476d3b3fcb6bd972915d1eadef58ff769bfad86166f" + }, + { + "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", + "channel": "stable", + "version": "3.24.1", + "dart_sdk_version": "3.5.1", + "dart_sdk_arch": "arm64", + "release_date": "2024-08-21T16:12:51.649861Z", + "archive": "stable/macos/flutter_macos_arm64_3.24.1-stable.zip", + "sha256": "6ad307c7d780ff5003f205687892abb7c0b4d06b07be85b20d347aa006fadb9b" }, { "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", @@ -26,6 +36,16 @@ "archive": "stable/macos/flutter_macos_arm64_3.24.0-stable.zip", "sha256": "3c443985c9cda5f6959a274caddfeb38e11777fc8ed8a69ae700a1485e6dd258" }, + { + "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", + "channel": "stable", + "version": "3.24.0", + "dart_sdk_version": "3.5.0", + "dart_sdk_arch": "x64", + "release_date": "2024-08-06T17:39:54.402003Z", + "archive": "stable/macos/flutter_macos_3.24.0-stable.zip", + "sha256": "94ab73b88a4a996c4eb930644838d0863918cbc4a039a8144ccafe2e1cacd304" + }, { "hash": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "channel": "beta", @@ -6573,4 +6593,4 @@ "sha256": "f063bd7fe3194865a832c204586c25d6155d8164b95949a5d1fd3426beec6e5c" } ] -} +} \ No newline at end of file diff --git a/releases_windows.json b/releases_windows.json index 17def8e6..dacedbb0 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -3,9 +3,19 @@ "current_release": { "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819" + "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ + { + "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", + "channel": "stable", + "version": "3.24.1", + "dart_sdk_version": "3.5.1", + "dart_sdk_arch": "x64", + "release_date": "2024-08-21T16:26:32.971654Z", + "archive": "stable/windows/flutter_windows_3.24.1-stable.zip", + "sha256": "7a48358189b510211d829cd0e78ce2b27ec3009060dc6fb2e8deb9ad282fccc8" + }, { "hash": "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819", "channel": "stable", From 145a9b8a2537079b451630f7c4475603ab58e802 Mon Sep 17 00:00:00 2001 From: flat-data Date: Wed, 21 Aug 2024 18:06:31 +0000 Subject: [PATCH 09/30] Flat: latest data (2024-08-21T18:06:31.264Z) { "date": "2024-08-21T18:06:31.264Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 860, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 430, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 429, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 05c054d8..37497006 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ + { + "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "channel": "beta", + "version": "3.25.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-149.3.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-08-21T17:43:56.379631Z", + "archive": "beta/linux/flutter_linux_3.25.0-0.1.pre-beta.tar.xz", + "sha256": "a14904dacdc323eed792f973ed223601d21a812408e5ed21f6cff4f4e19638ff" + }, { "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", "channel": "stable", diff --git a/releases_macos.json b/releases_macos.json index ab30f9af..2cd0193e 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -1,11 +1,31 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ + { + "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "channel": "beta", + "version": "3.25.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-149.3.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-08-21T17:43:33.890550Z", + "archive": "beta/macos/flutter_macos_3.25.0-0.1.pre-beta.zip", + "sha256": "21e6d350956208225ac90b70f015a61bf048cbdfb4893122af24579714db75cd" + }, + { + "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "channel": "beta", + "version": "3.25.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-149.3.beta)", + "dart_sdk_arch": "arm64", + "release_date": "2024-08-21T17:37:59.249905Z", + "archive": "beta/macos/flutter_macos_arm64_3.25.0-0.1.pre-beta.zip", + "sha256": "a8824688ea0c1487b6521293448d4f30860914ec51372b84b7bceefe4fcc4511" + }, { "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", "channel": "stable", diff --git a/releases_windows.json b/releases_windows.json index dacedbb0..94df4e4e 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "7c6b7e9ca485f7eaaed913c6bb50f4be6da47e30", + "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" }, "releases": [ + { + "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "channel": "beta", + "version": "3.25.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-149.3.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-08-21T17:50:26.676091Z", + "archive": "beta/windows/flutter_windows_3.25.0-0.1.pre-beta.zip", + "sha256": "da16608a86e7dce015ddff9d629e689dacf23fee576cff90806a55b583399245" + }, { "hash": "5874a72aa4c779a02553007c47dacbefba2374dc", "channel": "stable", From b14001ec29ee9a79c806d96553257ec3a7205f74 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 15:11:31 -0400 Subject: [PATCH 10/30] Update pubspec.lock --- pubspec.lock | 179 +++++++++++++++++++++++++++------------------------ 1 file changed, 96 insertions(+), 83 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 27ffda14..17e2f3d1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,42 +5,47 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "73.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.8.0" ansicolor: dependency: transitive description: name: ansicolor - sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" + sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" archive: dependency: transitive description: name: archive - sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d url: "https://pub.dev" source: hosted - version: "3.4.10" + version: "3.6.1" args: dependency: "direct main" description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" async: dependency: transitive description: @@ -77,10 +82,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" build_resolvers: dependency: transitive description: @@ -93,18 +98,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 url: "https://pub.dev" source: hosted - version: "2.4.8" + version: "2.4.12" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.2" build_verify: dependency: "direct dev" description: @@ -133,10 +138,10 @@ packages: dependency: transitive description: name: built_value - sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.9.1" + version: "8.9.2" characters: dependency: transitive description: @@ -205,10 +210,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" convert: dependency: transitive description: @@ -221,26 +226,26 @@ packages: dependency: transitive description: name: coverage - sha256: "8acabb8306b57a409bf4c83522065672ee13179297a6bb0cb9ead73948df7c76" + sha256: "576aaab8b1abdd452e0f656c3e73da9ead9d7880e15bdc494189d9c1a1baf0db" url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "1.9.0" crypto: dependency: "direct dev" description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" dart_code_metrics_presets: dependency: "direct dev" description: name: dart_code_metrics_presets - sha256: e6f61adbfc26f1997b46ebfb6d5d8b0ff3fff5edc2f2672089c464cb8be178e7 + sha256: f67df47fe3297617e0cf5d632aa257e17517ad9fdd605e152bdc80dd526f0c5b url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.15.0" dart_console: dependency: "direct main" description: @@ -277,10 +282,10 @@ packages: dependency: "direct main" description: name: date_format - sha256: "8e5154ca363411847220c8cbc43afcf69c08e8debe40ba09d57710c25711760c" + sha256: a48254e60bdb7f1d5a15cac7f86e37491808056c0a99dbdc850841def4754ddc url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.9" equatable: dependency: transitive description: @@ -293,10 +298,10 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: @@ -317,18 +322,18 @@ packages: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" git: dependency: "direct main" description: name: git - sha256: "1982737427ef1ef2bb69027ea0234469774495e86afe202de81ee46d37364e55" + sha256: daea03e7471607e7ed942bccd4814cfc7e4fa8ca5d3dd6ad4fb170e44423d1a0 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" glob: dependency: transitive description: @@ -341,10 +346,10 @@ packages: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" grinder: dependency: "direct dev" description: @@ -357,10 +362,10 @@ packages: dependency: "direct dev" description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_multi_server: dependency: transitive description: @@ -373,10 +378,10 @@ packages: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.0" interact: dependency: "direct main" description: @@ -413,10 +418,10 @@ packages: dependency: transitive description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" jsonc: dependency: "direct main" description: @@ -441,14 +446,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" mason_logger: dependency: "direct main" description: name: mason_logger - sha256: "0e90e637dcfcb7fb6c30b38e71cd41fa0e4e3df6f1da177f8251ac3f15147e9f" + sha256: "1fdf5c76870eb6fc3611ed6fbae1973a3794abe581ea5e22e68af2f73c688b93" url: "https://pub.dev" source: hosted - version: "0.2.12" + version: "0.2.16" matcher: dependency: transitive description: @@ -461,10 +474,10 @@ packages: dependency: "direct main" description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" mime: dependency: transitive description: @@ -525,18 +538,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.4" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" - url: "https://pub.dev" - source: hosted - version: "3.7.4" + version: "3.1.5" pool: dependency: transitive description: @@ -581,10 +586,10 @@ packages: dependency: transitive description: name: pubspec_parse - sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 url: "https://pub.dev" source: hosted - version: "1.2.3" + version: "1.3.0" quiver: dependency: transitive description: @@ -605,18 +610,18 @@ packages: dependency: "direct main" description: name: scope - sha256: "80cf1cb727791fdaaa4131817974a6084815ed59b9ab02ef352c3a1badea488b" + sha256: "9930a3822bd33d1884a642d1cd79e6baf56d17288b3e0c54ae7c00cb559ef614" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.1.1" shelf: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_packages_handler: dependency: transitive description: @@ -637,10 +642,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.0.0" source_gen: dependency: transitive description: @@ -653,10 +658,10 @@ packages: dependency: transitive description: name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" source_maps: dependency: transitive description: @@ -701,10 +706,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -717,26 +722,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" + sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" url: "https://pub.dev" source: hosted - version: "1.25.2" + version: "1.25.8" test_api: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.3" test_core: dependency: transitive description: name: test_core - sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" + sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.5" test_process: dependency: transitive description: @@ -789,10 +794,10 @@ packages: dependency: transitive description: name: vm_service - sha256: a75f83f14ad81d5fe4b3319710b90dec37da0e22612326b696c9e1b8f34bbf48 + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.0" + version: "14.2.5" watcher: dependency: transitive description: @@ -805,18 +810,26 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2" + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.0.1" webkit_inspection_protocol: dependency: transitive description: @@ -829,10 +842,10 @@ packages: dependency: transitive description: name: win32 - sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480" + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.5.4" xml: dependency: transitive description: @@ -850,4 +863,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.5.0-259.0.dev <4.0.0" From e7898edcc0e5956a27a691f37a7a4d89083cba79 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 15:40:47 -0400 Subject: [PATCH 11/30] Validate if git is installed (#765) --- lib/src/models/flutter_version_model.dart | 3 +++ lib/src/workflows/ensure_cache.workflow.dart | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/src/models/flutter_version_model.dart b/lib/src/models/flutter_version_model.dart index e9353e01..7034449c 100644 --- a/lib/src/models/flutter_version_model.dart +++ b/lib/src/models/flutter_version_model.dart @@ -122,4 +122,7 @@ class FlutterVersion with FlutterVersionMappable { return compareSemver(versionWeight, otherVersion); } + + @override + String toString() => name; } diff --git a/lib/src/workflows/ensure_cache.workflow.dart b/lib/src/workflows/ensure_cache.workflow.dart index a1d3494a..a9ecb69e 100644 --- a/lib/src/workflows/ensure_cache.workflow.dart +++ b/lib/src/workflows/ensure_cache.workflow.dart @@ -21,6 +21,7 @@ Future ensureCacheWorkflow( bool force = false, }) async { _validateContext(); + _validateGit(); // Get valid flutter version final validVersion = await validateFlutterVersion(version, force: force); try { @@ -238,3 +239,10 @@ void _validateContext() { ); } } + +void _validateGit() { + final isGitInstalled = Process.runSync('git', ['--version']).exitCode == 0; + if (!isGitInstalled) { + throw AppException('Git is not installed'); + } +} From 1b8ea16d3e1c83752093ac11a06c7eb8ec78fac8 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 16:43:24 -0400 Subject: [PATCH 12/30] Fixed config --- bin/main.dart | 2 +- lib/src/services/config_repository.dart | 4 +- lib/src/utils/helpers.dart | 10 ++- pubspec.lock | 99 ++++++++++--------------- pubspec.yaml | 4 +- 5 files changed, 53 insertions(+), 66 deletions(-) diff --git a/bin/main.dart b/bin/main.dart index 61750eda..d6e8d07b 100755 --- a/bin/main.dart +++ b/bin/main.dart @@ -10,7 +10,7 @@ Future main(List args) async { final scope = Scope()..value(contextKey, FVMContext.create(args: args)); await _flushThenExit( - await scope.run(() => FvmCommandRunner().run((args))), + await scope.run(() async => FvmCommandRunner().run((args))), ); } diff --git a/lib/src/services/config_repository.dart b/lib/src/services/config_repository.dart index 48289a55..dfc97f20 100644 --- a/lib/src/services/config_repository.dart +++ b/lib/src/services/config_repository.dart @@ -45,7 +45,9 @@ class ConfigRepository { final isRootDir = path.rootPrefix(directory.path) == directory.path; // Gets project from directory - final projectConfig = ProjectConfig.loadFromPath(directory.path); + final projectConfig = ProjectConfig.loadFromPath( + path.join(directory.path, kFvmConfigFileName), + ); // If project has a config return it if (projectConfig != null) return projectConfig; diff --git a/lib/src/utils/helpers.dart b/lib/src/utils/helpers.dart index c4e27aca..34d748a3 100644 --- a/lib/src/utils/helpers.dart +++ b/lib/src/utils/helpers.dart @@ -62,7 +62,9 @@ String assignVersionWeight(String version) { version = version.replaceFirst('v', ''); } - if (version.contains('custom_')) { + bool isCustom = version.contains('custom_'); + + if (isCustom) { version = version.replaceFirst('custom_', ''); } @@ -71,7 +73,11 @@ String assignVersionWeight(String version) { // ignore: avoid-unused-instances Version.parse(version); } on Exception { - logger.warn('Version $version is not a valid semver'); + if (isCustom) { + return '400.0.0'; + } + + logger.detail('Cache version $version is not a valid semver'); return '0.0.0'; } diff --git a/pubspec.lock b/pubspec.lock index 17e2f3d1..89d42b0e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,23 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "73.0.0" - _macros: - dependency: transitive - description: dart - source: sdk - version: "0.3.2" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "6.8.0" + version: "6.4.1" ansicolor: dependency: transitive description: @@ -82,10 +77,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.1" build_resolvers: dependency: transitive description: @@ -98,18 +93,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 + sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.4.9" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.3.2" + version: "7.3.0" build_verify: dependency: "direct dev" description: @@ -210,10 +205,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.18.0" convert: dependency: transitive description: @@ -226,18 +221,18 @@ packages: dependency: transitive description: name: coverage - sha256: "576aaab8b1abdd452e0f656c3e73da9ead9d7880e15bdc494189d9c1a1baf0db" + sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.8.0" crypto: dependency: "direct dev" description: name: crypto - sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.3" dart_code_metrics_presets: dependency: "direct dev" description: @@ -330,10 +325,10 @@ packages: dependency: "direct main" description: name: git - sha256: daea03e7471607e7ed942bccd4814cfc7e4fa8ca5d3dd6ad4fb170e44423d1a0 + sha256: "1982737427ef1ef2bb69027ea0234469774495e86afe202de81ee46d37364e55" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.2.1" glob: dependency: transitive description: @@ -346,10 +341,10 @@ packages: dependency: transitive description: name: graphs - sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.1" grinder: dependency: "direct dev" description: @@ -378,10 +373,10 @@ packages: dependency: transitive description: name: http_parser - sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.0.2" interact: dependency: "direct main" description: @@ -446,14 +441,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" - macros: - dependency: transitive - description: - name: macros - sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" - url: "https://pub.dev" - source: hosted - version: "0.1.2-main.4" mason_logger: dependency: "direct main" description: @@ -610,18 +597,18 @@ packages: dependency: "direct main" description: name: scope - sha256: "9930a3822bd33d1884a642d1cd79e6baf56d17288b3e0c54ae7c00cb559ef614" + sha256: "0b056e5b64ca16a2db9e1eb35cf7fd05a9e99a6b15140f82bfa651d081e4819b" url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "5.1.0" shelf: dependency: transitive description: name: shelf - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.4.2" + version: "1.4.1" shelf_packages_handler: dependency: transitive description: @@ -642,10 +629,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "1.0.4" source_gen: dependency: transitive description: @@ -722,26 +709,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" + sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e" url: "https://pub.dev" source: hosted - version: "1.25.8" + version: "1.25.7" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.2" test_core: dependency: transitive description: name: test_core - sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" + sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.4" test_process: dependency: transitive description: @@ -810,26 +797,18 @@ packages: dependency: transitive description: name: web - sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 - url: "https://pub.dev" - source: hosted - version: "1.0.0" - web_socket: - dependency: transitive - description: - name: web_socket - sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "0.5.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "2.4.5" webkit_inspection_protocol: dependency: transitive description: @@ -863,4 +842,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.5.0-259.0.dev <4.0.0" + dart: ">=3.4.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4b036319..35fa3552 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,10 +18,10 @@ dependencies: io: ^1.0.4 mason_logger: ^0.2.9 meta: ^1.10.0 - path: ^1.8.3 + path: ^1.9.0 pub_semver: ^2.1.4 pub_updater: ^0.4.0 - scope: ^4.1.0 + scope: ^5.1.0 yaml: ^3.1.2 dart_console: ^1.2.0 tint: ^2.0.1 From ea9bd4e4d38e46745e92d7ae6424e393abfa49b1 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 16:44:28 -0400 Subject: [PATCH 13/30] Disable local mirror on error (#766) --- lib/src/services/flutter_service.dart | 15 +++++++--- lib/src/workflows/ensure_cache.workflow.dart | 29 +++++++++++++++++-- .../resolve_dependencies.workflow.dart | 1 + test/services/cache_service_test.dart | 4 +-- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/lib/src/services/flutter_service.dart b/lib/src/services/flutter_service.dart index af5521fb..8fec0c80 100644 --- a/lib/src/services/flutter_service.dart +++ b/lib/src/services/flutter_service.dart @@ -43,7 +43,10 @@ class FlutterService extends ContextService { } /// Clones Flutter SDK from Version Number or Channel - Future install(FlutterVersion version) async { + Future install( + FlutterVersion version, { + required bool useGitCache, + }) async { final versionDir = CacheService(context).getVersionCacheDir(version.name); // Check if its git commit @@ -75,7 +78,7 @@ class FlutterService extends ContextService { final cloneArgs = [ //if its a git hash if (!version.isCommit) ...versionCloneParams, - if (context.gitCache) ...useMirrorParams, + if (useGitCache) ...useMirrorParams, ]; try { @@ -215,13 +218,17 @@ class FlutterServiveMock extends FlutterService { FlutterServiveMock(FVMContext context) : super(context); @override - Future install(FlutterVersion version) async { + Future install( + FlutterVersion version, { + required bool useGitCache, + }) async { /// Moves directory from main context HOME/fvm/versions to test context final mainContext = FVMContext.main; var cachedVersion = CacheService(mainContext).getVersion(version); if (cachedVersion == null) { - await FlutterService(mainContext).install(version); + await FlutterService(mainContext) + .install(version, useGitCache: useGitCache); cachedVersion = CacheService(mainContext).getVersion(version); } final versionDir = CacheService(mainContext).getVersionCacheDir( diff --git a/lib/src/workflows/ensure_cache.workflow.dart b/lib/src/workflows/ensure_cache.workflow.dart index a9ecb69e..65e47866 100644 --- a/lib/src/workflows/ensure_cache.workflow.dart +++ b/lib/src/workflows/ensure_cache.workflow.dart @@ -5,6 +5,7 @@ import 'package:mason_logger/mason_logger.dart'; import '../models/cache_flutter_version_model.dart'; import '../models/flutter_version_model.dart'; import '../services/cache_service.dart'; +import '../services/config_repository.dart'; import '../services/flutter_service.dart'; import '../services/logger_service.dart'; import '../services/releases_service/releases_client.dart'; @@ -82,15 +83,37 @@ Future ensureCacheWorkflow( } } - if (ctx.gitCache) { - await FlutterService.fromContext.updateLocalMirror(); + bool useGitCache = ctx.gitCache; + + if (useGitCache) { + try { + await FlutterService.fromContext.updateLocalMirror(); + } on Exception { + useGitCache = false; + logger.warn( + 'Failed to setup local cache. Falling back to git clone.', + ); + logger.info('Git cache will be disabled.'); + try { + final config = ConfigRepository.loadAppConfig(); + final updatedConfig = config.copyWith(useGitCache: false); + ConfigRepository.save(updatedConfig); + logger.success('Git cache has been disabled.'); + } on Exception { + logger.warn('Failed to update config file'); + } + } } final progress = logger.progress( 'Installing Flutter SDK: ${cyan.wrap(validVersion.printFriendlyName)}', ); try { - await FlutterService.fromContext.install(validVersion); + await FlutterService.fromContext.install( + validVersion, + useGitCache: useGitCache, + ); + progress.complete( 'Flutter SDK: ${cyan.wrap(validVersion.printFriendlyName)} installed!', ); diff --git a/lib/src/workflows/resolve_dependencies.workflow.dart b/lib/src/workflows/resolve_dependencies.workflow.dart index 1fba8932..98763dea 100644 --- a/lib/src/workflows/resolve_dependencies.workflow.dart +++ b/lib/src/workflows/resolve_dependencies.workflow.dart @@ -65,6 +65,7 @@ Future resolveDependenciesWorkflow( final confirmation = logger.confirm( 'Would you like to continue pinning this version anyway?', + defaultValue: false, ); if (!confirmation) { diff --git a/test/services/cache_service_test.dart b/test/services/cache_service_test.dart index 8cb946d7..15c92435 100644 --- a/test/services/cache_service_test.dart +++ b/test/services/cache_service_test.dart @@ -19,8 +19,8 @@ void main() { expect(validChannel, null); expect(validVersion, null); - await FlutterService.fromContext.install(_channel); - await FlutterService.fromContext.install(_version); + await FlutterService.fromContext.install(_channel, useGitCache: true); + await FlutterService.fromContext.install(_version, useGitCache: true); final cacheChannel = CacheService.fromContext.getVersion(_channel); From ec45f1704b8c072b141133a6e0455a42cd1e81f6 Mon Sep 17 00:00:00 2001 From: Rexios Date: Sun, 25 Aug 2024 16:45:59 -0400 Subject: [PATCH 14/30] Add flag to exit with error instead of asking for interaction (#712) --- CHANGELOG.md | 7 +++++ bin/main.dart | 11 +++++++- .../documentation/guides/basic-commands.mdx | 2 ++ lib/src/services/logger_service.dart | 27 ++++++++++++++++--- lib/src/utils/context.dart | 11 +++++++- lib/src/utils/context.mapper.dart | 13 +++++++++ lib/src/workflows/ensure_cache.workflow.dart | 3 ++- pubspec.yaml | 2 +- 8 files changed, 69 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43f7143d..e88078fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 3.2.0 + +* Adds support for skipping input requests by @Rexios80. Input requests are skipped when: + * The `--fvm-skip-input` flag is passed + * Running in CI +* Exits with `ExitCode.unavailable` if the request to install a Flutter version is denied by @Rexios80 + ## 3.1.7 * Display the configured version in the `fvm list` command by @digoreis diff --git a/bin/main.dart b/bin/main.dart index d6e8d07b..11232fe1 100755 --- a/bin/main.dart +++ b/bin/main.dart @@ -7,7 +7,16 @@ import 'package:fvm/src/utils/context.dart'; import 'package:scope/scope.dart'; Future main(List args) async { - final scope = Scope()..value(contextKey, FVMContext.create(args: args)); + final editableArgs = List.from(args); + final skipInput = editableArgs.remove('--fvm-skip-input'); + final scope = Scope() + ..value( + contextKey, + FVMContext.create( + args: editableArgs, + skipInput: skipInput, + ), + ); await _flushThenExit( await scope.run(() async => FvmCommandRunner().run((args))), diff --git a/docs/pages/documentation/guides/basic-commands.mdx b/docs/pages/documentation/guides/basic-commands.mdx index 3e93cf35..561696f8 100644 --- a/docs/pages/documentation/guides/basic-commands.mdx +++ b/docs/pages/documentation/guides/basic-commands.mdx @@ -40,6 +40,8 @@ Sets a specific Flutter SDK version for a project, ensuring environment consiste - `-s, --skip-setup`: Omits Flutter setup post-installation for expedited process. - `--skip-pub-get`: Skips resolving dependencies (`flutter pub get`) after switching Flutter SDK. +- `--fvm-skip-input`: Skips requests for user input and uses default values. + ### Examples **Setting a Specific Version**: diff --git a/lib/src/services/logger_service.dart b/lib/src/services/logger_service.dart index 967ae2c8..6caeb26a 100644 --- a/lib/src/services/logger_service.dart +++ b/lib/src/services/logger_service.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:dart_console/dart_console.dart'; import 'package:interact/interact.dart' as interact; @@ -63,19 +64,39 @@ class LoggerService extends ContextService { return progress; } - bool confirm(String? message, {bool? defaultValue}) { + bool confirm(String? message, {bool? defaultValue, bool? ciDefaultValue}) { // When running tests, always return true. if (context.isTest) return true; + if (context.skipInput) { + if (ciDefaultValue != null) { + return ciDefaultValue; + } else if (defaultValue != null) { + return defaultValue; + } + exit(ExitCode.usage.code); + } + return interact.Confirm(prompt: message ?? '', defaultValue: defaultValue) .interact(); } - String select(String? message, {required List options}) { + String select( + String? message, { + required List options, + int? defaultSelection, + }) { + if (context.skipInput) { + if (defaultSelection != null) { + return options[defaultSelection]; + } + exit(ExitCode.usage.code); + } + final selection = interact.Select( prompt: message ?? '', options: options, - initialIndex: 0, + initialIndex: defaultSelection ?? 0, ).interact(); return options[selection]; diff --git a/lib/src/utils/context.dart b/lib/src/utils/context.dart index a48221a6..eb55dbe5 100644 --- a/lib/src/utils/context.dart +++ b/lib/src/utils/context.dart @@ -56,6 +56,9 @@ class FVMContext with FVMContextMappable { final List args; + /// True if the `--fvm-skip-input` flag was passed to the command + final bool _skipInput; + /// Generated values final Map _dependencies = {}; @@ -68,13 +71,15 @@ class FVMContext with FVMContextMappable { required this.config, required this.environment, required this.args, + required bool skipInput, required this.generators, this.isTest = false, - }); + }) : _skipInput = skipInput; static FVMContext create({ String? id, List? args, + bool? skipInput, AppConfig? configOverrides, String? workingDirectory, Map? generatorOverrides, @@ -96,6 +101,7 @@ class FVMContext with FVMContextMappable { config: config, environment: environment, args: args ?? [], + skipInput: skipInput ?? false, generators: { LoggerService: (context) => LoggerService( level: level, @@ -189,6 +195,9 @@ class FVMContext with FVMContextMappable { return kCiEnvironmentVariables.any(Platform.environment.containsKey); } + @MappableField() + bool get skipInput => isCI || _skipInput; + T get() { if (_dependencies.containsKey(T)) { return _dependencies[T] as T; diff --git a/lib/src/utils/context.mapper.dart b/lib/src/utils/context.mapper.dart index cd5ed2c3..c1d3d634 100644 --- a/lib/src/utils/context.mapper.dart +++ b/lib/src/utils/context.mapper.dart @@ -35,6 +35,9 @@ class FVMContextMapper extends ClassMapperBase { Field('environment', _$environment); static List _$args(FVMContext v) => v.args; static const Field> _f$args = Field('args', _$args); + static bool _$_skipInput(FVMContext v) => v._skipInput; + static const Field _f$_skipInput = + Field('_skipInput', _$_skipInput, key: 'skipInput'); static Map _$generators( FVMContext v) => v.generators; @@ -83,6 +86,9 @@ class FVMContextMapper extends ClassMapperBase { Field('configPath', _$configPath); static bool _$isCI(FVMContext v) => v.isCI; static const Field _f$isCI = Field('isCI', _$isCI); + static bool _$skipInput(FVMContext v) => v.skipInput; + static const Field _f$skipInput = + Field('skipInput', _$skipInput); @override final MappableFields fields = const { @@ -91,6 +97,7 @@ class FVMContextMapper extends ClassMapperBase { #config: _f$config, #environment: _f$environment, #args: _f$args, + #_skipInput: _f$_skipInput, #generators: _f$generators, #isTest: _f$isTest, #fvmDir: _f$fvmDir, @@ -107,6 +114,7 @@ class FVMContextMapper extends ClassMapperBase { #versionsCachePath: _f$versionsCachePath, #configPath: _f$configPath, #isCI: _f$isCI, + #skipInput: _f$skipInput, }; static FVMContext _instantiate(DecodingData data) { @@ -116,6 +124,7 @@ class FVMContextMapper extends ClassMapperBase { config: data.dec(_f$config), environment: data.dec(_f$environment), args: data.dec(_f$args), + skipInput: data.dec(_f$_skipInput), generators: data.dec(_f$generators), isTest: data.dec(_f$isTest)); } @@ -187,6 +196,7 @@ abstract class FVMContextCopyWith<$R, $In extends FVMContext, $Out> AppConfig? config, Map? environment, List? args, + bool? skipInput, Map? generators, bool? isTest}); FVMContextCopyWith<$R2, $In, $Out2> $chain<$R2, $Out2>(Then<$Out2, $R2> t); @@ -230,6 +240,7 @@ class _FVMContextCopyWithImpl<$R, $Out> AppConfig? config, Map? environment, List? args, + bool? skipInput, Map? generators, bool? isTest}) => $apply(FieldCopyWithData({ @@ -238,6 +249,7 @@ class _FVMContextCopyWithImpl<$R, $Out> if (config != null) #config: config, if (environment != null) #environment: environment, if (args != null) #args: args, + if (skipInput != null) #skipInput: skipInput, if (generators != null) #generators: generators, if (isTest != null) #isTest: isTest })); @@ -249,6 +261,7 @@ class _FVMContextCopyWithImpl<$R, $Out> config: data.get(#config, or: $value.config), environment: data.get(#environment, or: $value.environment), args: data.get(#args, or: $value.args), + skipInput: data.get(#skipInput, or: $value._skipInput), generators: data.get(#generators, or: $value.generators), isTest: data.get(#isTest, or: $value.isTest)); diff --git a/lib/src/workflows/ensure_cache.workflow.dart b/lib/src/workflows/ensure_cache.workflow.dart index 65e47866..f495bc52 100644 --- a/lib/src/workflows/ensure_cache.workflow.dart +++ b/lib/src/workflows/ensure_cache.workflow.dart @@ -75,10 +75,11 @@ Future ensureCacheWorkflow( final shouldInstallConfirmed = logger.confirm( 'Would you like to install it now?', defaultValue: true, + ciDefaultValue: false, ); if (!shouldInstallConfirmed) { - exit(ExitCode.success.code); + exit(ExitCode.unavailable.code); } } } diff --git a/pubspec.yaml b/pubspec.yaml index 35fa3552..91733525 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: fvm description: A simple cli to manage Flutter SDK versions per project. Support channels, releases, and local cache for fast switching between versions. -version: 3.1.7 +version: 3.2.0 homepage: https://github.com/leoafarias/fvm environment: From 7d50e8e94c665da4e8ee72e0509b78d575d42ae2 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 16:54:06 -0400 Subject: [PATCH 15/30] Improved ci behavior --- bin/main.dart | 11 +---------- lib/src/services/logger_service.dart | 18 ++++++++---------- lib/src/utils/context.dart | 6 ++++-- lib/src/utils/deprecation_util.dart | 1 + lib/src/version.dart | 2 +- lib/src/workflows/ensure_cache.workflow.dart | 1 - lib/src/workflows/use_version.workflow.dart | 5 ++++- 7 files changed, 19 insertions(+), 25 deletions(-) diff --git a/bin/main.dart b/bin/main.dart index 11232fe1..d6e8d07b 100755 --- a/bin/main.dart +++ b/bin/main.dart @@ -7,16 +7,7 @@ import 'package:fvm/src/utils/context.dart'; import 'package:scope/scope.dart'; Future main(List args) async { - final editableArgs = List.from(args); - final skipInput = editableArgs.remove('--fvm-skip-input'); - final scope = Scope() - ..value( - contextKey, - FVMContext.create( - args: editableArgs, - skipInput: skipInput, - ), - ); + final scope = Scope()..value(contextKey, FVMContext.create(args: args)); await _flushThenExit( await scope.run(() async => FvmCommandRunner().run((args))), diff --git a/lib/src/services/logger_service.dart b/lib/src/services/logger_service.dart index 6caeb26a..e4a762ec 100644 --- a/lib/src/services/logger_service.dart +++ b/lib/src/services/logger_service.dart @@ -64,17 +64,17 @@ class LoggerService extends ContextService { return progress; } - bool confirm(String? message, {bool? defaultValue, bool? ciDefaultValue}) { + bool confirm(String? message, {required bool defaultValue}) { // When running tests, always return true. if (context.isTest) return true; - if (context.skipInput) { - if (ciDefaultValue != null) { - return ciDefaultValue; - } else if (defaultValue != null) { - return defaultValue; - } - exit(ExitCode.usage.code); + if (context.isCI || context.skipInput) { + logger.info(message ?? ''); + logger + ..warn('Skipping input confirmation') + ..warn('Using default value of $defaultValue'); + + return defaultValue; } return interact.Confirm(prompt: message ?? '', defaultValue: defaultValue) @@ -134,8 +134,6 @@ class LoggerService extends ContextService { final dot = '\u{25CF}'; // ● final rightArrow = '\u{2192}'; // → -/// Logger for FVM -/// Console controller instance final consoleController = ConsoleController(); /// Console Controller diff --git a/lib/src/utils/context.dart b/lib/src/utils/context.dart index eb55dbe5..9f3b04ad 100644 --- a/lib/src/utils/context.dart +++ b/lib/src/utils/context.dart @@ -79,7 +79,6 @@ class FVMContext with FVMContextMappable { static FVMContext create({ String? id, List? args, - bool? skipInput, AppConfig? configOverrides, String? workingDirectory, Map? generatorOverrides, @@ -95,13 +94,16 @@ class FVMContext with FVMContextMappable { final environment = {...Platform.environment, ...?environmentOverrides}; + // Skips input if running in CI + final skipInput = args?.remove('--fvm-skip-input') ?? false; + return FVMContext.base( id: id ?? 'MAIN', workingDirectory: workingDirectory, config: config, environment: environment, args: args ?? [], - skipInput: skipInput ?? false, + skipInput: skipInput, generators: { LoggerService: (context) => LoggerService( level: level, diff --git a/lib/src/utils/deprecation_util.dart b/lib/src/utils/deprecation_util.dart index d2022dd7..25286b6d 100644 --- a/lib/src/utils/deprecation_util.dart +++ b/lib/src/utils/deprecation_util.dart @@ -21,6 +21,7 @@ void _warnDeprecatedEnvVars() { logger.info('Please use ${ConfigKeys.flutterUrl.envKey}'); final confirmation = logger.confirm( 'Do you want to proceed? This might impact the expected behavior.', + defaultValue: false, ); if (!confirmation) { exit(ExitCode.success.code); diff --git a/lib/src/version.dart b/lib/src/version.dart index 54d58d26..518a1829 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1,2 +1,2 @@ // Generated code. Do not modify. -const packageVersion = '3.1.7'; +const packageVersion = '3.2.0'; diff --git a/lib/src/workflows/ensure_cache.workflow.dart b/lib/src/workflows/ensure_cache.workflow.dart index f495bc52..d46aa8f2 100644 --- a/lib/src/workflows/ensure_cache.workflow.dart +++ b/lib/src/workflows/ensure_cache.workflow.dart @@ -75,7 +75,6 @@ Future ensureCacheWorkflow( final shouldInstallConfirmed = logger.confirm( 'Would you like to install it now?', defaultValue: true, - ciDefaultValue: false, ); if (!shouldInstallConfirmed) { diff --git a/lib/src/workflows/use_version.workflow.dart b/lib/src/workflows/use_version.workflow.dart index 540bd0aa..f8104e23 100644 --- a/lib/src/workflows/use_version.workflow.dart +++ b/lib/src/workflows/use_version.workflow.dart @@ -48,7 +48,10 @@ Future useVersionWorkflow({ logger ..spacer ..info('No pubspec.yaml detected in this directory'); - final proceed = logger.confirm('Would you like to continue?'); + final proceed = logger.confirm( + 'Would you like to continue?', + defaultValue: true, + ); if (!proceed) exit(ExitCode.success.code); } From 49069f5e8490a68639e2bcd2755639321e166371 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 16:58:41 -0400 Subject: [PATCH 16/30] Update changelog --- CHANGELOG.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e88078fb..0576452a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,12 @@ ## 3.2.0 -* Adds support for skipping input requests by @Rexios80. Input requests are skipped when: - * The `--fvm-skip-input` flag is passed - * Running in CI -* Exits with `ExitCode.unavailable` if the request to install a Flutter version is denied by @Rexios80 +* add: support for skipping input requests by @Rexios80. Input requests are skipped when the `--fvm-skip-input` flag is passed. +* add: documentation for command rerouting by @humblerookie +* fix(cosmetics): fvm has one newline too much by @jonasbadstuebner +* fix: unsupported architecture on arm64 by @MrCyjaneK +* add: tags for Docker deployment by @CodeRedDev +* add: Validate if git is installed by @leoafarias +* add: Disable local mirror on exception by @leoafarias ## 3.1.7 From e17876f6107d7c6f71af75f98a75e5ab6798275b Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Sun, 25 Aug 2024 17:23:27 -0400 Subject: [PATCH 17/30] Context fix --- lib/src/utils/context.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/utils/context.dart b/lib/src/utils/context.dart index 9f3b04ad..80f2295d 100644 --- a/lib/src/utils/context.dart +++ b/lib/src/utils/context.dart @@ -95,7 +95,7 @@ class FVMContext with FVMContextMappable { final environment = {...Platform.environment, ...?environmentOverrides}; // Skips input if running in CI - final skipInput = args?.remove('--fvm-skip-input') ?? false; + final skipInput = args?.contains('--fvm-skip-input') ?? false; return FVMContext.base( id: id ?? 'MAIN', From 2d886cc70683f45b2d978503cc6de78711816794 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Mon, 26 Aug 2024 08:42:30 -0400 Subject: [PATCH 18/30] Updated args in context --- bin/main.dart | 2 +- lib/src/utils/context.dart | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bin/main.dart b/bin/main.dart index d6e8d07b..ac58cda1 100755 --- a/bin/main.dart +++ b/bin/main.dart @@ -10,7 +10,7 @@ Future main(List args) async { final scope = Scope()..value(contextKey, FVMContext.create(args: args)); await _flushThenExit( - await scope.run(() async => FvmCommandRunner().run((args))), + await scope.run(() async => FvmCommandRunner().run((ctx.args))), ); } diff --git a/lib/src/utils/context.dart b/lib/src/utils/context.dart index 80f2295d..15b17428 100644 --- a/lib/src/utils/context.dart +++ b/lib/src/utils/context.dart @@ -95,14 +95,17 @@ class FVMContext with FVMContextMappable { final environment = {...Platform.environment, ...?environmentOverrides}; // Skips input if running in CI - final skipInput = args?.contains('--fvm-skip-input') ?? false; + + final updatedArgs = [...?args]; + + final skipInput = updatedArgs.remove('--fvm-skip-input'); return FVMContext.base( id: id ?? 'MAIN', workingDirectory: workingDirectory, config: config, environment: environment, - args: args ?? [], + args: updatedArgs, skipInput: skipInput, generators: { LoggerService: (context) => LoggerService( From 21332bad595220f1e830d269ed076f9a54b1db82 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Mon, 26 Aug 2024 08:44:47 -0400 Subject: [PATCH 19/30] Version bump --- CHANGELOG.md | 4 ++++ lib/src/version.dart | 2 +- pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0576452a..9a84538f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.2.1 + +* fix: `--fvm-skip-input` flag not applying to context + ## 3.2.0 * add: support for skipping input requests by @Rexios80. Input requests are skipped when the `--fvm-skip-input` flag is passed. diff --git a/lib/src/version.dart b/lib/src/version.dart index 518a1829..e11e1d06 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1,2 +1,2 @@ // Generated code. Do not modify. -const packageVersion = '3.2.0'; +const packageVersion = '3.2.1'; diff --git a/pubspec.yaml b/pubspec.yaml index 91733525..ee0b4a3c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: fvm description: A simple cli to manage Flutter SDK versions per project. Support channels, releases, and local cache for fast switching between versions. -version: 3.2.0 +version: 3.2.1 homepage: https://github.com/leoafarias/fvm environment: From 7bb641e4d7e9107a56b71102b47957d4aafc3650 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Mon, 26 Aug 2024 08:55:55 -0400 Subject: [PATCH 20/30] Updated docker action --- .github/workflows/release.yml | 14 +++++++++++++- CHANGELOG.md | 1 + lib/src/commands/list_command.dart | 18 +++++++++--------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8108b09..888aa286 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,6 +97,18 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v1 + - name: Get and modify tag name + id: get_tag_name + run: | + # Extract the tag name + TAG_NAME=${ github.event.release.tag_name } + + # Remove 'v' from the beginning of the tag name, if present + MODIFIED_TAG_NAME=${TAG_NAME#v} + + # Set the modified tag name as an output + echo "modified_tag_name=$MODIFIED_TAG_NAME" >> $GITHUB_ENV + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 @@ -112,4 +124,4 @@ jobs: with: file: ./.docker/Dockerfile push: true - tags: leoafarias/fvm:{{ github.event.release.tag_name }} + tags: leoafarias/fvm:{{ steps.get_tag_name.outputs.modified_tag_name}} diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a84538f..721b5d7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 3.2.1 * fix: `--fvm-skip-input` flag not applying to context +* add: `fvm list` now displays the cache path even if no version is installed ## 3.2.0 diff --git a/lib/src/commands/list_command.dart b/lib/src/commands/list_command.dart index 639309ed..8cd1fbdc 100644 --- a/lib/src/commands/list_command.dart +++ b/lib/src/commands/list_command.dart @@ -3,8 +3,8 @@ import 'package:mason_logger/mason_logger.dart'; import '../services/cache_service.dart'; import '../services/global_version_service.dart'; -import '../services/project_service.dart'; import '../services/logger_service.dart'; +import '../services/project_service.dart'; import '../services/releases_service/models/version_model.dart'; import '../services/releases_service/releases_client.dart'; import '../utils/context.dart'; @@ -27,14 +27,6 @@ class ListCommand extends BaseCommand { Future run() async { final cacheVersions = await CacheService.fromContext.getAllVersions(); - if (cacheVersions.isEmpty) { - logger - ..info('No SDKs have been installed yet. Flutter. SDKs') - ..info('installed outside of fvm will not be displayed.'); - - return ExitCode.success.code; - } - final directorySize = await getFullDirectorySize(cacheVersions); // Print where versions are stored @@ -43,6 +35,14 @@ class ListCommand extends BaseCommand { ..info('Directory Size: ${formatBytes(directorySize)}') ..spacer; + if (cacheVersions.isEmpty) { + logger + ..info('No SDKs have been installed yet. Flutter. SDKs') + ..info('installed outside of fvm will not be displayed.'); + + return ExitCode.success.code; + } + final releases = await FlutterReleasesClient.getReleases(); final globalVersion = GlobalVersionService.fromContext.getGlobal(); final localVersion = ProjectService.fromContext.findVersion(); From 563dc5378eab34fdbb7d434fbf071a98b5357510 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Thu, 29 Aug 2024 09:21:10 -0400 Subject: [PATCH 21/30] Updated custom-version docs --- .../documentation/advanced/custom-version.mdx | 94 ++++++++++++++++++- 1 file changed, 89 insertions(+), 5 deletions(-) diff --git a/docs/pages/documentation/advanced/custom-version.mdx b/docs/pages/documentation/advanced/custom-version.mdx index cf279db9..b41c9eb9 100644 --- a/docs/pages/documentation/advanced/custom-version.mdx +++ b/docs/pages/documentation/advanced/custom-version.mdx @@ -6,16 +6,100 @@ import { Callout } from "nextra/components"; # Custom Flutter Version (Forks) -You can use custom Flutter versions (forks) within the FVM cache. +In case you need to have a custom version of the Flutter SDK (a fork), referenced within a project, and you want to continue to use FVM, you can do so by following the steps below. -To do that, you have to prefix the version with `custom_` and then add the name of the version. For example, if you want to use a custom version of Flutter, you can do the following: +There are two ways to use a custom version of the Flutter SDK: +## **Clone the fork within the FVM cache** + +This method is useful if you want to use a fork of the Flutter SDK within a project and reference that "custom" version like you would releases or channels. + +**1. Look for the path where FVM caches the versions. You can find this path by running the following command:** + +```bash +fvm list +``` + +Output: +```ansi terminal +Cache directory: /Users/{user}/fvm/versions +Directory Size: 6.47 GB + +┌────────────────┬─────────┬────────────────────┬─────────────────┬──────────────┬────────┬───────┐ +│ Version  │ Channel │ Flutter Version  │ Dart Version  │ Release Date │ Global │ Local │ +├────────────────┼─────────┼────────────────────┼─────────────────┼──────────────┼────────┼───────┤ +│ stable  │ stable  │ 3.24.1  │ 3.5.1  │ Aug 21, 2024 │   │   │ +├────────────────┼─────────┼────────────────────┼─────────────────┼──────────────┼────────┼───────┤ +│ 3.19.0  │ stable  │ 3.19.0  │ 3.3.0  │ Feb 15, 2024 │   │   │ +└────────────────┴─────────┴────────────────────┴─────────────────┴──────────────┴────────┴───────┘ +``` +**2. Clone the fork of the Flutter SDK into the cache directory.** + +When cloning, make sure to prefix the version with `custom_` and then add the name of the version. For example, if you want to fork a version called `special`, you will have to clone it into the cache directory as `custom_special`. + +The prefix `custom_` is used to differentiate the custom versions from the official Flutter versions and allows FVM to not apply the same level of validation as it does with the official versions. + +Now, when you run `fvm list`, you should see the custom version in the list. + +Output: + +```ansi +Cache directory: /Users/{user}/fvm/versions +Directory Size: 6.47 GB + +┌────────────────┬─────────┬────────────────────┬─────────────────┬──────────────┬────────┬───────┐ +│ Version  │ Channel │ Flutter Version  │ Dart Version  │ Release Date │ Global │ Local │ +├────────────────┼─────────┼────────────────────┼─────────────────┼──────────────┼────────┼───────┤ +│ custom_special │   │ 3.24.0-1.0.pre.575 │ 3.6.0-146.0.dev │   │   │   │ +├────────────────┼─────────┼────────────────────┼─────────────────┼──────────────┼────────┼───────┤ +│ stable  │ stable  │ 3.24.1  │ 3.5.1  │ Aug 21, 2024 │   │   │ +├────────────────┼─────────┼────────────────────┼─────────────────┼──────────────┼────────┼───────┤ +│ 3.19.0  │ stable  │ 3.19.0  │ 3.3.0  │ Feb 15, 2024 │   │   │ +└────────────────┴─────────┴────────────────────┴─────────────────┴──────────────┴────────┴───────┘ +``` +**3. Use the custom version within your project.** + +You can now use the custom version within your project by running the following command, but referencing it as `custom_special`: + +```bash +fvm use custom_special +``` + +## **Change the repository URL to the fork** + +With FVM, you can also change the repository URL to the fork you want to use. This method is useful if you want to use a fork of the Flutter SDK globally and want to continue to reference releases and channels from the fork version. + +There are a few ways you can do this: + +**Option 1. Change the repository URL globally used by FVM** ```bash -fvm use [custom_name] +fvm config --flutter-url https://github.com/org/custom-flutter.git ``` +Now, when you run `fvm install` or `fvm use`, it will use the custom repository URL. + +If you already have versions installed, you will have to reinstall them to use the custom repository URL version of them. + + +**Option 2. Change the environment variable** + +You can also change the repository URL by setting the environment variable `FVM_FLUTTER_URL`: + +```bash +# Change the env var in your shell profile +export FVM_FLUTTER_URL="https://github.com/org/custom-flutter.git" +``` +### **Setting the custom repository URL per project** + +You can also set the custom repository URL per project by creating a `.fvmrc` file in the root of your project and adding the following: -Run `fvm list` to view the cache directory and the current cached versions. + +Keep in mind that for each project, the releases and channels need to be different from the ones used in other projects; otherwise, there might be some conflict. A good idea would be to reserve certain versions like `master`, for example. + - \ No newline at end of file +```json filename=".fvmrc" +{ + "flutter_url": "https://github.com/org/custom-flutter.git" +} +``` \ No newline at end of file From b72cfa19846cb168109904620b729cde4471f894 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Fri, 30 Aug 2024 11:31:25 -0400 Subject: [PATCH 22/30] Update docs --- .github/workflows/release.yml | 12 ++++++------ docs/pages/documentation/advanced/custom-version.mdx | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 888aa286..e9baccd4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -100,14 +100,14 @@ jobs: - name: Get and modify tag name id: get_tag_name run: | - # Extract the tag name - TAG_NAME=${ github.event.release.tag_name } + # Extract the tag name from the GitHub ref + TAG_NAME=${{ github.ref_name }} - # Remove 'v' from the beginning of the tag name, if present - MODIFIED_TAG_NAME=${TAG_NAME#v} + # Remove leading 'v' from the tag name, if present + MODIFIED_TAG_NAME=$(echo "$TAG_NAME" | sed 's/^v//') - # Set the modified tag name as an output - echo "modified_tag_name=$MODIFIED_TAG_NAME" >> $GITHUB_ENV + # Set the modified tag name as an environment variable + echo "MODIFIED_TAG_NAME=$MODIFIED_TAG_NAME" >> $GITHUB_ENV - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 diff --git a/docs/pages/documentation/advanced/custom-version.mdx b/docs/pages/documentation/advanced/custom-version.mdx index b41c9eb9..e10efabd 100644 --- a/docs/pages/documentation/advanced/custom-version.mdx +++ b/docs/pages/documentation/advanced/custom-version.mdx @@ -40,6 +40,11 @@ When cloning, make sure to prefix the version with `custom_` and then add the na The prefix `custom_` is used to differentiate the custom versions from the official Flutter versions and allows FVM to not apply the same level of validation as it does with the official versions. Now, when you run `fvm list`, you should see the custom version in the list. + +Make sure you always clone the whole repository using the command `git clone url-to-repository.git`. +Do not use `--depth` or `--single-branch` as it might cause issues with the Flutter SDK. +Flutter Tools depends on repository references to determine its version correct version. + Output: From 66cbce2b6afdfc67cbc53d3fc969eee69d54e014 Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Wed, 4 Sep 2024 10:38:00 -0400 Subject: [PATCH 23/30] Improved fvm list message (#776) --- lib/src/commands/list_command.dart | 12 +++- pubspec.lock | 103 +++++++++++++++++------------ 2 files changed, 73 insertions(+), 42 deletions(-) diff --git a/lib/src/commands/list_command.dart b/lib/src/commands/list_command.dart index 8cd1fbdc..671710cb 100644 --- a/lib/src/commands/list_command.dart +++ b/lib/src/commands/list_command.dart @@ -35,6 +35,16 @@ class ListCommand extends BaseCommand { ..info('Directory Size: ${formatBytes(directorySize)}') ..spacer; + if (cacheVersions.any((e) => e.isNotSetup)) { + logger + ..warn( + 'Some versions might still require finishing setup - SDKs have been cloned, but they have not downloaded their dependencies.', + ) + ..info( + 'This will complete the first time you run any command with the SDK.', + ) + ..spacer; + } if (cacheVersions.isEmpty) { logger ..info('No SDKs have been installed yet. Flutter. SDKs') @@ -79,7 +89,7 @@ class ListCommand extends BaseCommand { String getVersionOutput() { if (version.isNotSetup) { - return flutterSdkVersion = '${yellow.wrap('Need setup')}'; + return flutterSdkVersion = '${yellow.wrap('Need setup*')}'; } if (latestRelease != null && version.isChannel) { // If its not the latest version diff --git a/pubspec.lock b/pubspec.lock index 89d42b0e..6097a9f6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,23 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "73.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.8.0" ansicolor: dependency: transitive description: @@ -77,10 +82,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" build_resolvers: dependency: transitive description: @@ -93,18 +98,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.12" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.2" build_verify: dependency: "direct dev" description: @@ -205,10 +210,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" convert: dependency: transitive description: @@ -221,18 +226,18 @@ packages: dependency: transitive description: name: coverage - sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" + sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.2" crypto: dependency: "direct dev" description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" dart_code_metrics_presets: dependency: "direct dev" description: @@ -325,10 +330,10 @@ packages: dependency: "direct main" description: name: git - sha256: "1982737427ef1ef2bb69027ea0234469774495e86afe202de81ee46d37364e55" + sha256: daea03e7471607e7ed942bccd4814cfc7e4fa8ca5d3dd6ad4fb170e44423d1a0 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" glob: dependency: transitive description: @@ -341,10 +346,10 @@ packages: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" grinder: dependency: "direct dev" description: @@ -373,10 +378,10 @@ packages: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.0" interact: dependency: "direct main" description: @@ -441,6 +446,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" mason_logger: dependency: "direct main" description: @@ -469,10 +482,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" native_stack_traces: dependency: transitive description: @@ -581,10 +594,10 @@ packages: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" retry: dependency: transitive description: @@ -605,10 +618,10 @@ packages: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_packages_handler: dependency: transitive description: @@ -629,10 +642,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.0.0" source_gen: dependency: transitive description: @@ -709,26 +722,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e" + sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" url: "https://pub.dev" source: hosted - version: "1.25.7" + version: "1.25.8" test_api: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" test_core: dependency: transitive description: name: test_core - sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696" + sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" test_process: dependency: transitive description: @@ -797,18 +810,26 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "3.0.1" webkit_inspection_protocol: dependency: transitive description: @@ -842,4 +863,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.5.0-259.0.dev <4.0.0" From c25ae4e1a2f592890721d5dc829fbd96b51a5e23 Mon Sep 17 00:00:00 2001 From: flat-data Date: Wed, 4 Sep 2024 15:05:39 +0000 Subject: [PATCH 24/30] Flat: latest data (2024-09-04T15:05:39.374Z) { "date": "2024-09-04T15:05:39.374Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 790, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 395, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 394, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 37497006..ac6a6604 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -3,9 +3,19 @@ "current_release": { "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" + "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", + "channel": "stable", + "version": "3.24.2", + "dart_sdk_version": "3.5.2", + "dart_sdk_arch": "x64", + "release_date": "2024-09-04T14:40:37.174233Z", + "archive": "stable/linux/flutter_linux_3.24.2-stable.tar.xz", + "sha256": "143f77340401e7f147a380ba18112445ed017c1d187fb4d20e40bb6ea1f13aa5" + }, { "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "channel": "beta", diff --git a/releases_macos.json b/releases_macos.json index 2cd0193e..58dfdb6f 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -3,9 +3,29 @@ "current_release": { "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" + "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", + "channel": "stable", + "version": "3.24.2", + "dart_sdk_version": "3.5.2", + "dart_sdk_arch": "x64", + "release_date": "2024-09-04T14:39:50.081027Z", + "archive": "stable/macos/flutter_macos_3.24.2-stable.zip", + "sha256": "6a569f2ed3eff90fe5b83cee184dfdc2a8d8c2b72a590de896cb7553c18e339c" + }, + { + "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", + "channel": "stable", + "version": "3.24.2", + "dart_sdk_version": "3.5.2", + "dart_sdk_arch": "arm64", + "release_date": "2024-09-04T14:34:33.513138Z", + "archive": "stable/macos/flutter_macos_arm64_3.24.2-stable.zip", + "sha256": "ce69bd4f24763338becc6725d1eda4a8d9c53e1bebc12974e32d2abb9a23c676" + }, { "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "channel": "beta", diff --git a/releases_windows.json b/releases_windows.json index 94df4e4e..9cb39e9a 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -3,9 +3,19 @@ "current_release": { "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "5874a72aa4c779a02553007c47dacbefba2374dc" + "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", + "channel": "stable", + "version": "3.24.2", + "dart_sdk_version": "3.5.2", + "dart_sdk_arch": "x64", + "release_date": "2024-09-04T14:43:58.842261Z", + "archive": "stable/windows/flutter_windows_3.24.2-stable.zip", + "sha256": "0ffd1b929fc1269379f7cbbed8ef0e95331f2ccaaf2f0e4e5ef8afa2e1957340" + }, { "hash": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", "channel": "beta", From 4dc8db370843ac22c01e156e1da71675d18b347b Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Thu, 5 Sep 2024 10:19:00 -0400 Subject: [PATCH 25/30] Update custom-version.mdx --- docs/pages/documentation/advanced/custom-version.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/documentation/advanced/custom-version.mdx b/docs/pages/documentation/advanced/custom-version.mdx index e10efabd..053819bc 100644 --- a/docs/pages/documentation/advanced/custom-version.mdx +++ b/docs/pages/documentation/advanced/custom-version.mdx @@ -105,6 +105,6 @@ Keep in mind that for each project, the releases and channels need to be differe ```json filename=".fvmrc" { - "flutter_url": "https://github.com/org/custom-flutter.git" + "flutterUrl": "https://github.com/org/custom-flutter.git" } -``` \ No newline at end of file +``` From 4f86f4228bbae85b0ae0d5ae2c4b822cea06e194 Mon Sep 17 00:00:00 2001 From: Albin PK <56157868+albinpk@users.noreply.github.com> Date: Tue, 10 Sep 2024 23:57:10 +0530 Subject: [PATCH 26/30] fix: typo in `fvm install` command (#778) --- lib/src/commands/install_command.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/commands/install_command.dart b/lib/src/commands/install_command.dart index 7b4845f0..0f0fa552 100644 --- a/lib/src/commands/install_command.dart +++ b/lib/src/commands/install_command.dart @@ -23,7 +23,7 @@ class InstallCommand extends BaseCommand { ..addFlag( 'setup', abbr: 's', - help: 'Builds SDK after install after install', + help: 'Builds SDK after install', defaultsTo: false, negatable: false, ) From 95d4a46fa94d07d717cd4cf6e19013ab5dcc449a Mon Sep 17 00:00:00 2001 From: flat-data Date: Wed, 11 Sep 2024 17:05:21 +0000 Subject: [PATCH 27/30] Flat: latest data (2024-09-11T17:05:20.996Z) { "date": "2024-09-11T17:05:20.996Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 860, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 430, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 429, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index ac6a6604..4e104037 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", + "channel": "beta", + "version": "3.26.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-216.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-09-11T16:50:25.777191Z", + "archive": "beta/linux/flutter_linux_3.26.0-0.1.pre-beta.tar.xz", + "sha256": "dca40a84c968e6a0344ff71bdd0e5d83bb6c678287f0d104c0e7a98892c38b58" + }, { "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", "channel": "stable", diff --git a/releases_macos.json b/releases_macos.json index 58dfdb6f..88921ac9 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -1,11 +1,31 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", + "channel": "beta", + "version": "3.26.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-216.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-09-11T16:45:34.919026Z", + "archive": "beta/macos/flutter_macos_3.26.0-0.1.pre-beta.zip", + "sha256": "34fba6cefd98dce5de2b660f9b657de59c5fd9bd8bce6fee96b3d6c274cc57e6" + }, + { + "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", + "channel": "beta", + "version": "3.26.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-216.1.beta)", + "dart_sdk_arch": "arm64", + "release_date": "2024-09-11T16:40:10.270049Z", + "archive": "beta/macos/flutter_macos_arm64_3.26.0-0.1.pre-beta.zip", + "sha256": "346fba0764bd58771edacefef758dfb5ca7114bf591df546a0f32f2d5d56b474" + }, { "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", "channel": "stable", diff --git a/releases_windows.json b/releases_windows.json index 9cb39e9a..3dc9791d 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -1,11 +1,21 @@ { "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", "current_release": { - "beta": "d3733fcb0ecb65cc845b3426bd32ecc1323db1cd", + "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" }, "releases": [ + { + "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", + "channel": "beta", + "version": "3.26.0-0.1.pre", + "dart_sdk_version": "3.6.0 (build 3.6.0-216.1.beta)", + "dart_sdk_arch": "x64", + "release_date": "2024-09-11T16:51:50.566051Z", + "archive": "beta/windows/flutter_windows_3.26.0-0.1.pre-beta.zip", + "sha256": "9da2415ec0afaef07a1a32e705784f803318f7934e1f63a4708e8828a63ba959" + }, { "hash": "4cf269e36de2573851eaef3c763994f8f9be494d", "channel": "stable", From 2e91d437a057a189f827933e510c599272206781 Mon Sep 17 00:00:00 2001 From: flat-data Date: Thu, 12 Sep 2024 18:06:54 +0000 Subject: [PATCH 28/30] Flat: latest data (2024-09-12T18:06:54.492Z) { "date": "2024-09-12T18:06:54.492Z", "files": [ { "name": "releases_macos.json", "deltaBytes": 790, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json" }, { "name": "releases_windows.json", "deltaBytes": 395, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_windows.json" }, { "name": "releases_linux.json", "deltaBytes": 394, "source": "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json" } ] } --- releases_linux.json | 12 +++++++++++- releases_macos.json | 22 +++++++++++++++++++++- releases_windows.json | 12 +++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/releases_linux.json b/releases_linux.json index 4e104037..cb671bf9 100644 --- a/releases_linux.json +++ b/releases_linux.json @@ -3,9 +3,19 @@ "current_release": { "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" + "stable": "2663184aa79047d0a33a14a3b607954f8fdd8730" }, "releases": [ + { + "hash": "2663184aa79047d0a33a14a3b607954f8fdd8730", + "channel": "stable", + "version": "3.24.3", + "dart_sdk_version": "3.5.3", + "dart_sdk_arch": "x64", + "release_date": "2024-09-12T17:35:51.434414Z", + "archive": "stable/linux/flutter_linux_3.24.3-stable.tar.xz", + "sha256": "f4e2369afaf38a8e381c9243fad2ca04b8514194c40ec946825d1f4c5539a095" + }, { "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", "channel": "beta", diff --git a/releases_macos.json b/releases_macos.json index 88921ac9..5c2da064 100644 --- a/releases_macos.json +++ b/releases_macos.json @@ -3,9 +3,29 @@ "current_release": { "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" + "stable": "2663184aa79047d0a33a14a3b607954f8fdd8730" }, "releases": [ + { + "hash": "2663184aa79047d0a33a14a3b607954f8fdd8730", + "channel": "stable", + "version": "3.24.3", + "dart_sdk_version": "3.5.3", + "dart_sdk_arch": "x64", + "release_date": "2024-09-12T17:29:51.966574Z", + "archive": "stable/macos/flutter_macos_3.24.3-stable.zip", + "sha256": "c7947ac3162acc580d9ba55d16ce4a3e51966f5b8799bf0344f455e8ec3df242" + }, + { + "hash": "2663184aa79047d0a33a14a3b607954f8fdd8730", + "channel": "stable", + "version": "3.24.3", + "dart_sdk_version": "3.5.3", + "dart_sdk_arch": "arm64", + "release_date": "2024-09-12T17:25:35.203102Z", + "archive": "stable/macos/flutter_macos_arm64_3.24.3-stable.zip", + "sha256": "be1619663d4af3527164114bdb31fa67f84d572f453dc928b5d33959d47ddbcc" + }, { "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", "channel": "beta", diff --git a/releases_windows.json b/releases_windows.json index 3dc9791d..19e5de3d 100644 --- a/releases_windows.json +++ b/releases_windows.json @@ -3,9 +3,19 @@ "current_release": { "beta": "ee624bc4fd41413cbb89099b0701a42287643d9a", "dev": "13a2fb10b838971ce211230f8ffdd094c14af02c", - "stable": "4cf269e36de2573851eaef3c763994f8f9be494d" + "stable": "2663184aa79047d0a33a14a3b607954f8fdd8730" }, "releases": [ + { + "hash": "2663184aa79047d0a33a14a3b607954f8fdd8730", + "channel": "stable", + "version": "3.24.3", + "dart_sdk_version": "3.5.3", + "dart_sdk_arch": "x64", + "release_date": "2024-09-12T17:36:05.717800Z", + "archive": "stable/windows/flutter_windows_3.24.3-stable.zip", + "sha256": "74007227350e1c73278e90fba5b1d02780e7299d4d48fdacff035c669530a6d8" + }, { "hash": "ee624bc4fd41413cbb89099b0701a42287643d9a", "channel": "beta", From 9a4a6615ca8c970ea68fc61c74515c4630fb16f0 Mon Sep 17 00:00:00 2001 From: Gaetan Jonathan BAKARY Date: Tue, 1 Oct 2024 20:08:36 +0300 Subject: [PATCH 29/30] Update install.sh (#785) --- scripts/install.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/install.sh b/scripts/install.sh index 69aec862..5ce5c2a8 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -105,7 +105,15 @@ fi # Create a symlink if ! ln -sf "$FMV_DIR_BIN/fvm" "$SYMLINK_TARGET"; then - error "Failed to create symlink." + # verify if linux and try with sudo + if [ "$OS" == "linux" ]; then + echo -e "Trying to create symlink with sudo..." + if ! sudo ln -sf "$FMV_DIR_BIN/fvm" "$SYMLINK_TARGET"; then + error "Failed to create symlink" + fi + else + error "Failed to create symlink" + fi fi # Verify installation From 11c998a14833ed897127764447c7a907d1ee1b5f Mon Sep 17 00:00:00 2001 From: Nidal Bakir <29513372+Nidal-Bakir@users.noreply.github.com> Date: Tue, 1 Oct 2024 20:15:25 +0300 Subject: [PATCH 30/30] feat: automatically add `~/.fvm_flutter/bin` to the PATH var in `install.sh` and introduce `update.sh` (#700) --- scripts/install.sh | 197 ++++++++++++++++++++++++++++++++++--------- scripts/uninstall.sh | 31 +++---- scripts/update.sh | 116 +++++++++++++++++++++++++ 3 files changed, 289 insertions(+), 55 deletions(-) create mode 100755 scripts/update.sh diff --git a/scripts/install.sh b/scripts/install.sh index 5ce5c2a8..18225e14 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -11,27 +11,35 @@ ARCH="$(uname -m)" # Map to FVM naming case "$OS" in - Linux*) OS='linux' ;; - Darwin*) OS='macos' ;; - *) log_message "Unsupported OS"; exit 1 ;; +Linux*) OS='linux' ;; +Darwin*) OS='macos' ;; +*) + log_message "Unsupported OS" + exit 1 + ;; esac case "$ARCH" in - x86_64) ARCH='x64' ;; - arm64|aarch64) ARCH='arm64' ;; - armv7l) ARCH='arm' ;; - *) log_message "Unsupported architecture"; exit 1 ;; + x86_64) ARCH='x64' ;; + arm64|aarch64) ARCH='arm64' ;; + armv7l) ARCH='arm' ;; + *) log_message "Unsupported architecture"; exit 1 ;; esac # Terminal colors setup -Color_Off='\033[0m' # Reset -Green='\033[0;32m' # Green -Red='\033[0;31m' +Color_Off='\033[0m' # Reset +Green='\033[0;32m' # Green +Red='\033[0;31m' +Bold_White='\033[1m' # Bold White success() { log_message "${Green}$1${Color_Off}" } +info_bold() { + log_message "${Bold_White}$1${Color_Off}" +} + error() { log_message "${Red}error: $1${Color_Off}" >&2 exit 1 @@ -42,42 +50,40 @@ log_message "Detected OS: $OS" log_message "Detected Architecture: $ARCH" # Check for curl -if ! command -v curl &> /dev/null; then +if ! command -v curl &>/dev/null; then error "curl is required but not installed." fi # Get installed FVM version if exists INSTALLED_FVM_VERSION="" -if command -v fvm &> /dev/null; then +if command -v fvm &>/dev/null; then INSTALLED_FVM_VERSION=$(fvm --version 2>&1) || error "Failed to fetch installed FVM version." fi # Define the URL of the FVM binary if [ -z "$1" ]; then - FVM_VERSION=$(curl -s https://api.github.com/repos/leoafarias/fvm/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') - if [ -z "$FVM_VERSION" ]; then - error "Failed to fetch latest FVM version." - fi + FVM_VERSION=$(curl -s https://api.github.com/repos/leoafarias/fvm/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + if [ -z "$FVM_VERSION" ]; then + error "Failed to fetch latest FVM version." + fi else - FVM_VERSION="$1" + FVM_VERSION="$1" fi log_message "Installing FVM version $FVM_VERSION." # Setup installation directory and symlink FVM_DIR="$HOME/.fvm_flutter" -FMV_DIR_BIN="$FVM_DIR/bin" -SYMLINK_TARGET="/usr/local/bin/fvm" - +FVM_DIR_BIN="$FVM_DIR/bin" # Create FVM directory if it doesn't exist mkdir -p "$FVM_DIR" || error "Failed to create FVM directory: $FVM_DIR." # Check if FVM_DIR exists, and if it does delete it -if [ -d "$FMV_DIR_BIN" ]; then +if [ -d "$FVM_DIR_BIN" ]; then log_message "FVM bin directory already exists. Removing it." - if ! rm -rf "$FMV_DIR_BIN"; then - error "Failed to remove existing FVM directory: $FMV_DIR_BIN." + if ! rm -rf "$FVM_DIR_BIN"; then + error "Failed to remove existing FVM directory: $FVM_DIR_BIN." fi fi @@ -87,7 +93,6 @@ if ! curl -L "$URL" -o fvm.tar.gz; then error "Download failed. Check your internet connection and URL: $URL" fi - # Extract binary to the new location if ! tar xzf fvm.tar.gz -C "$FVM_DIR" 2>&1; then error "Extraction failed. Check permissions and tar.gz file integrity." @@ -99,27 +104,139 @@ if ! rm -f fvm.tar.gz; then fi # Rename FVM_DIR/fvm to FVM_DIR/bin -if ! mv "$FVM_DIR/fvm" "$FMV_DIR_BIN"; then +if ! mv "$FVM_DIR/fvm" "$FVM_DIR_BIN"; then error "Failed to move fvm to bin directory." fi -# Create a symlink -if ! ln -sf "$FMV_DIR_BIN/fvm" "$SYMLINK_TARGET"; then - # verify if linux and try with sudo - if [ "$OS" == "linux" ]; then - echo -e "Trying to create symlink with sudo..." - if ! sudo ln -sf "$FMV_DIR_BIN/fvm" "$SYMLINK_TARGET"; then - error "Failed to create symlink" - fi +tildify() { + if [[ $1 = $HOME/* ]]; then + local replacement=\~/ + + echo "${1/$HOME\//$replacement}" else - error "Failed to create symlink" + echo "$1" fi -fi +} + +tilde_FVM_DIR_BIN=$(tildify "$FVM_DIR_BIN") +refresh_command='' + +case $(basename "$SHELL") in +fish) + commands=( + "set --export PATH $FVM_DIR_BIN \$PATH" + ) + + fish_config=$HOME/.config/fish/config.fish + tilde_fish_config=$(tildify "$fish_config") + + if [[ -w $fish_config ]]; then + { + echo -e '\n# FVM' + + for command in "${commands[@]}"; do + echo "$command" + done + } >>"$fish_config" + + log_message "Added \"$tilde_FVM_DIR_BIN\" to \$PATH in \"$tilde_fish_config\"" + refresh_command="source $tilde_fish_config" + + else + log_message "Manually add the directory to $tilde_fish_config (or similar):" + + for command in "${commands[@]}"; do + info_bold " $command" + done + fi + ;; +zsh) + commands=( + "export PATH=\"$FVM_DIR_BIN:\$PATH\"" + ) + + zsh_config=$HOME/.zshrc + tilde_zsh_config=$(tildify "$zsh_config") + + if [[ -w $zsh_config ]]; then + { + echo -e '\n# FVM' + + for command in "${commands[@]}"; do + echo "$command" + done + } >>"$zsh_config" + + log_message "Added \"$tilde_FVM_DIR_BIN\" to \$PATH in \"$tilde_zsh_config\"" + refresh_command="source $zsh_config" + + else + log_message "Manually add the directory to $tilde_zsh_config (or similar):" + + for command in "${commands[@]}"; do + info_bold " $command" + done + fi + ;; +bash) + commands=( + "export PATH=$FVM_DIR_BIN:\$PATH" + ) + + bash_configs=( + "$HOME/.bashrc" + "$HOME/.bash_profile" + ) + + if [[ ${XDG_CONFIG_HOME:-} ]]; then + bash_configs+=( + "$XDG_CONFIG_HOME/.bash_profile" + "$XDG_CONFIG_HOME/.bashrc" + "$XDG_CONFIG_HOME/bash_profile" + "$XDG_CONFIG_HOME/bashrc" + ) + fi + + set_manually=true + for bash_config in "${bash_configs[@]}"; do + tilde_bash_config=$(tildify "$bash_config") + + if [[ -w $bash_config ]]; then + { + echo -e '\n# FVM' + + for command in "${commands[@]}"; do + echo "$command" + done + } >>"$bash_config" + + log_message "Added \"$tilde_FVM_DIR_BIN\" to \$PATH in \"$tilde_bash_config\"" + refresh_command="source $bash_config" + set_manually=false + break + fi + done + + if [[ $set_manually = true ]]; then + log_message "Manually add the directory to $tilde_bash_config (or similar):" + + for command in "${commands[@]}"; do + info_bold " $command" + done + fi + ;; +*) + log_message 'Manually add the directory to ~/.bashrc (or similar):' + info_bold " export PATH=\"$FVM_DIR_BIN:\$PATH\"" + ;; +esac + +echo +log_message "To get started, run:" +echo -# Verify installation -if ! command -v fvm &> /dev/null; then - error "Installation verification failed. FVM may not be in PATH or failed to execute." +if [[ $refresh_command ]]; then + info_bold " $refresh_command" fi -INSTALLED_FVM_VERSION=$(fvm --version 2>&1) || error "Failed to verify installed FVM version." -success "FVM $INSTALLED_FVM_VERSION installed successfully." +info_bold " fvm --help" diff --git a/scripts/uninstall.sh b/scripts/uninstall.sh index 2024af9b..265adc3c 100755 --- a/scripts/uninstall.sh +++ b/scripts/uninstall.sh @@ -1,15 +1,21 @@ #!/bin/bash -# Define the FVM directory and binary path -FVM_DIR="$HOME/.fvm_flutter" -BIN_LINK="/usr/local/bin/fvm" +# Detect OS +OS="$(uname -s)" -# Check if FVM is installed -if ! command -v fvm &> /dev/null -then - echo "FVM is not installed. Exiting." +# Map to FVM naming +case "$OS" in +Linux*) OS='linux' ;; +Darwin*) OS='macos' ;; +*) + log_message "Unsupported OS" exit 1 -fi + ;; +esac + +# Define the FVM directory and binary path +FVM_DIR="$HOME/.fvm_flutter" +FVM_DIR_BIN="$FVM_DIR/bin" # Remove the FVM binary echo "Uninstalling FVM..." @@ -18,15 +24,10 @@ rm -rf "$FVM_DIR" || { exit 1 } -# Remove the symlink -rm -f "$BIN_LINK" || { - echo "Failed to remove FVM symlink: $BIN_LINK." - exit 1 -} +echo "You can remove \"export PATH=$FVM_DIR_BIN:\$PATH\" from your ~/.bashrc, ~/.zshrc (or similar)" # Check if uninstallation was successful -if command -v fvm &> /dev/null -then +if command -v fvm &>/dev/null; then echo "Uninstallation failed. Please try again later." exit 1 fi diff --git a/scripts/update.sh b/scripts/update.sh new file mode 100755 index 00000000..e09a93bd --- /dev/null +++ b/scripts/update.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash + +# Function to log messages with date and time +log_message() { + echo -e "$1" +} + +# Detect OS and architecture +OS="$(uname -s)" +ARCH="$(uname -m)" + +# Map to FVM naming +case "$OS" in +Linux*) OS='linux' ;; +Darwin*) OS='macos' ;; +*) + log_message "Unsupported OS" + exit 1 + ;; +esac + +case "$ARCH" in +x86_64) ARCH='x64' ;; +arm64) ARCH='arm64' ;; +armv7l) ARCH='arm' ;; +*) + log_message "Unsupported architecture" + exit 1 + ;; +esac + +# Terminal colors setup +Color_Off='\033[0m' # Reset +Green='\033[0;32m' # Green +Red='\033[0;31m' +Bold_White='\033[1m' # Bold White + +success() { + log_message "${Green}$1${Color_Off}" +} + +info_bold() { + log_message "${Bold_White}$1${Color_Off}" +} + +error() { + log_message "${Red}error: $1${Color_Off}" >&2 + exit 1 +} + +# Log detected OS and architecture +log_message "Detected OS: $OS" +log_message "Detected Architecture: $ARCH" + +# Check for curl +if ! command -v curl &>/dev/null; then + error "curl is required but not installed." +fi + +# Get installed FVM version if exists +INSTALLED_FVM_VERSION="" +if command -v fvm &>/dev/null; then + INSTALLED_FVM_VERSION=$(fvm --version 2>&1) || error "Failed to fetch installed FVM version." +fi + +# Define the URL of the FVM binary +if [ -z "$1" ]; then + FVM_VERSION=$(curl -s https://api.github.com/repos/leoafarias/fvm/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + if [ -z "$FVM_VERSION" ]; then + error "Failed to fetch latest FVM version." + fi +else + FVM_VERSION="$1" +fi + +log_message "Installing FVM version $FVM_VERSION." + +# Setup installation directory and symlink +FVM_DIR="$HOME/.fvm_flutter" +FVM_DIR_BIN="$FVM_DIR/bin" + +# Create FVM directory if it doesn't exist +mkdir -p "$FVM_DIR" || error "Failed to create FVM directory: $FVM_DIR." + +# Check if FVM_DIR exists, and if it does delete it +if [ -d "$FVM_DIR_BIN" ]; then + log_message "FVM bin directory already exists. Removing it." + if ! rm -rf "$FVM_DIR_BIN"; then + error "Failed to remove existing FVM directory: $FVM_DIR_BIN." + fi +fi + +# Download FVM +URL="https://github.com/leoafarias/fvm/releases/download/$FVM_VERSION/fvm-$FVM_VERSION-$OS-$ARCH.tar.gz" +if ! curl -L "$URL" -o fvm.tar.gz; then + error "Download failed. Check your internet connection and URL: $URL" +fi + +# Extract binary to the new location +if ! tar xzf fvm.tar.gz -C "$FVM_DIR" 2>&1; then + error "Extraction failed. Check permissions and tar.gz file integrity." +fi + +# Cleanup +if ! rm -f fvm.tar.gz; then + error "Failed to cleanup" +fi + +# Rename FVM_DIR/fvm to FVM_DIR/bin +if ! mv "$FVM_DIR/fvm" "$FVM_DIR_BIN"; then + error "Failed to move fvm to bin directory." +fi + +echo +success "FVM updated to $FVM_VERSION successfully" +echo