Compare commits

...

26 Commits

Author SHA1 Message Date
Alif Rachmawadi
26bf50084a update test platform map
Some checks failed
Main workflow / Run (ubuntu-latest) (push) Failing after 16m21s
Main workflow / Run (macos-latest) (push) Failing after 2s
Main workflow / Run (windows-latest) (push) Has been cancelled
2020-10-08 01:36:34 +00:00
Alif Rachmawadi
45483e4c19 increase test timeout 2020-10-08 01:32:27 +00:00
Alif Rachmawadi
6f4d1ee832 use exact prettier 2020-10-08 01:26:57 +00:00
Alif Rachmawadi
58a4d54c5d update dist 2020-10-08 01:24:34 +00:00
Alif Rachmawadi
d0e7441034 update installer 2020-10-08 01:22:27 +00:00
Alif Rachmawadi
c7c0640db8 add release version check function 2020-10-08 01:22:02 +00:00
Alif Rachmawadi
1aaec8dd0f update dependencies 2020-10-08 01:20:47 +00:00
Alif Rachmawadi
ddb7b913ca update test data 2020-10-08 01:19:56 +00:00
Alif Rachmawadi
0b6cdde020 Merge pull request #60 from subosito/dependabot/npm_and_yarn/actions/core-1.2.6
Bump @actions/core from 1.2.4 to 1.2.6
2020-10-07 19:26:56 +07:00
dependabot[bot]
8078702ac6 Bump @actions/core from 1.2.4 to 1.2.6
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.4 to 1.2.6.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-01 17:17:20 +00:00
Alif Rachmawadi
282b38c3d9 Merge pull request #30 from AlessioLuciani/master
Add iOS and Android app bundle builds
2020-08-14 10:12:00 +07:00
Alif Rachmawadi
12d5ce54d2 Merge pull request #53 from subosito/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-07-22 17:03:20 +07:00
dependabot[bot]
d00139d608 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-18 00:09:06 +00:00
Alessio Luciani
5d4e01ab3b Add build instructions for the web 2020-06-19 16:13:08 +02:00
Alif Rachmawadi
40bc2f6940 bump version
Some checks failed
Main workflow / Run (ubuntu-latest) (push) Failing after 39m38s
Main workflow / Run (macos-latest) (push) Failing after 3s
Main workflow / Run (windows-latest) (push) Has been cancelled
2020-05-09 11:03:06 +07:00
Alif Rachmawadi
f0d790518f update dist 2020-05-09 10:37:01 +07:00
Alif Rachmawadi
c4a41752bd update dependencies 2020-05-09 10:36:22 +07:00
Alif Rachmawadi
929035d687 update test 2020-05-09 10:17:16 +07:00
Alif Rachmawadi
4bb529986f use channel for latest release 2020-05-09 09:46:10 +07:00
Alif Rachmawadi
ecb8eabe6f update tests 2020-05-09 09:43:40 +07:00
Alif Rachmawadi
cf426f9aa2 update release manifest 2020-05-09 09:43:05 +07:00
Alif Rachmawadi
794e42ad48 bump version: 1.3.1
Some checks failed
Main workflow / Run (macos-latest) (push) Failing after 3s
Main workflow / Run (ubuntu-latest) (push) Failing after 19m55s
Main workflow / Run (windows-latest) (push) Has been cancelled
2020-04-30 09:48:20 +07:00
Alif Rachmawadi
2dd537cc3f update dist 2020-04-30 09:47:38 +07:00
Alif Rachmawadi
3ba093556e Merge pull request #36 from subosito/dependabot/npm_and_yarn/actions/http-client-1.0.8
Bump @actions/http-client from 1.0.7 to 1.0.8
2020-04-30 09:45:20 +07:00
dependabot[bot]
9cde868c41 Bump @actions/http-client from 1.0.7 to 1.0.8
Bumps [@actions/http-client](https://github.com/actions/http-client) from 1.0.7 to 1.0.8.
- [Release notes](https://github.com/actions/http-client/releases)
- [Changelog](https://github.com/actions/http-client/blob/master/RELEASES.md)
- [Commits](https://github.com/actions/http-client/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-04-29 18:01:31 +00:00
Alessio Luciani
a81c830097 Add iOS and Android app bundle builds
Solving issue https://github.com/subosito/flutter-action/issues/7 .
2020-04-09 14:40:15 +02:00
11 changed files with 8780 additions and 5340 deletions

View File

@@ -18,6 +18,59 @@ steps:
- run: flutter build apk
```
Build for iOS too (macOS only):
```yaml
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
flutter-version: '1.9.1+hotfix.6'
- run: flutter pub get
- run: flutter test
- run: flutter build apk
- run: flutter build ios --release --no-codesign
```
Use app bundle, instead of APK:
```yaml
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
flutter-version: '1.9.1+hotfix.6'
- run: flutter pub get
- run: flutter test
- run: flutter build appbundle
```
Build for the web:
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: subosito/flutter-action@v1
with:
channel: beta
- run: flutter config --enable-web
- run: flutter pub get
- run: flutter test
- run: flutter build web
```
Use latest release for particular channel:
```yaml

View File

@@ -1,18 +1,466 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
"current_release": {
"beta": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98",
"dev": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"stable": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3"
"beta": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"dev": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"stable": "d408d302e22179d598f467e11da5dd968dbdc9ec"
},
"releases": [
{
"hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"channel": "dev",
"version": "1.23.0-7.0.pre",
"release_date": "2020-10-01T23:27:31.491417Z",
"archive": "dev/linux/flutter_linux_1.23.0-7.0.pre-dev.tar.xz",
"sha256": "454ade7c3d24d58f5118bf8eebc6ff1b5635f306ec481f0e5ba180bd3059d898"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "stable",
"version": "1.22.0",
"release_date": "2020-10-01T14:34:00.881067Z",
"archive": "stable/linux/flutter_linux_1.22.0-stable.tar.xz",
"sha256": "a8ee7458c3b1c3cfff2e1307d89721f48aa6b684d9b1ab2bf419698d0ae9d967"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "beta",
"version": "1.22.0-12.3.pre",
"release_date": "2020-09-29T20:24:32.881819Z",
"archive": "beta/linux/flutter_linux_1.22.0-12.3.pre-beta.tar.xz",
"sha256": "f0d39b401e623581425070c9ca93323236134571721d9880ba8f927f46f8bfab"
},
{
"hash": "2bafdc822636426fa09afb43236400a60ea432b2",
"channel": "beta",
"version": "1.22.0-12.2.pre",
"release_date": "2020-09-28T16:48:05.583300Z",
"archive": "beta/linux/flutter_linux_1.22.0-12.2.pre-beta.tar.xz",
"sha256": "c3c7e66f48e1a3b63400adbcb272487a01a496552c69d7d080b0fd0978ae5594"
},
{
"hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1",
"channel": "dev",
"version": "1.23.0-4.0.pre",
"release_date": "2020-09-22T21:17:39.925058Z",
"archive": "dev/linux/flutter_linux_1.23.0-4.0.pre-dev.tar.xz",
"sha256": "43a77efd0b74c611185711c7bf5413998a93e036d6dc3c186ac37b95a8304c94"
},
{
"hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5",
"channel": "beta",
"version": "1.22.0-12.1.pre",
"release_date": "2020-09-16T17:16:40.811444Z",
"archive": "beta/linux/flutter_linux_1.22.0-12.1.pre-beta.tar.xz",
"sha256": "6301b83fe963becd5d47cff6fc9e33d9412569e5c2d08b3b88952d38652da897"
},
{
"hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89",
"channel": "stable",
"version": "1.20.4",
"release_date": "2020-09-15T17:49:01.042713Z",
"archive": "stable/linux/flutter_linux_1.20.4-stable.tar.xz",
"sha256": "70d479d7cffe31c23ff70f798a3414405441397743ab83626f018c4869bd54a3"
},
{
"hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb",
"channel": "dev",
"version": "1.22.0-12.0.pre",
"release_date": "2020-09-14T21:53:13.773392Z",
"archive": "dev/linux/flutter_linux_1.22.0-12.0.pre-dev.tar.xz",
"sha256": "088465e692ed42e55f992e4a6082f3ec4c2177c791bd11a3a2017b61109dc52c"
},
{
"hash": "216dee60c0cc9449f0b29bcf922974d612263e24",
"channel": "stable",
"version": "1.20.3",
"release_date": "2020-09-02T18:06:30.513925Z",
"archive": "stable/linux/flutter_linux_1.20.3-stable.tar.xz",
"sha256": "66077a6f0d4baa58edcbc51d0418ad6781dc3ae22b88ce160b7b4556765b293f"
},
{
"hash": "7a4317519865146acda84702bba8775610598c0c",
"channel": "dev",
"version": "1.22.0-9.0.pre",
"release_date": "2020-09-01T19:39:00.885280Z",
"archive": "dev/linux/flutter_linux_1.22.0-9.0.pre-dev.tar.xz",
"sha256": "056c9907c7f82ec050502931f90f957b67d1dc960f71eacf8135aa4cb252d1a5"
},
{
"hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d",
"channel": "beta",
"version": "1.21.0-9.2.pre",
"release_date": "2020-08-28T18:39:17.092143Z",
"archive": "beta/linux/flutter_linux_1.21.0-9.2.pre-beta.tar.xz",
"sha256": "9f88e71562044b291f67a294c0d7c236a6dc6e7ad14065608c73aa9e3896d768"
},
{
"hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6",
"channel": "dev",
"version": "1.22.0-1.0.pre",
"release_date": "2020-08-21T22:07:11.688251Z",
"archive": "dev/linux/flutter_linux_1.22.0-1.0.pre-dev.tar.xz",
"sha256": "6ddc48c9bb78cbf564b8423f90167398b3f8b62c4fe010183b2e2ab1a2e3ee40"
},
{
"hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18",
"channel": "beta",
"version": "1.21.0-9.1.pre",
"release_date": "2020-08-19T18:43:17.164133Z",
"archive": "beta/linux/flutter_linux_1.21.0-9.1.pre-beta.tar.xz",
"sha256": "225c932068858d8933116ee1dcfb0de12e1c9ea961335b1a295d85607102edad"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "beta",
"version": "1.20.2",
"release_date": "2020-08-14T21:07:28.246902Z",
"archive": "beta/linux/flutter_linux_1.20.2-beta.tar.xz",
"sha256": "e569b55862d8224616a0528fe746b3724e3b36ffb44717d20bc7f4f7f558bcd9"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "stable",
"version": "1.20.2",
"release_date": "2020-08-13T21:49:57.376494Z",
"archive": "stable/linux/flutter_linux_1.20.2-stable.tar.xz",
"sha256": "d977ad356184e17565657ae9a0a0977fbb93047638af4e4320290c20c4b8418a"
},
{
"hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083",
"channel": "dev",
"version": "1.21.0-9.0.pre",
"release_date": "2020-08-13T17:31:36.085672Z",
"archive": "dev/linux/flutter_linux_1.21.0-9.0.pre-dev.tar.xz",
"sha256": "7fef663b3edb950667be75897bd35df544baadb0ad056930f80b79cb0eae1cc7"
},
{
"hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97",
"channel": "dev",
"version": "1.21.0-7.0.pre",
"release_date": "2020-08-07T16:47:56.936647Z",
"archive": "dev/linux/flutter_linux_1.21.0-7.0.pre-dev.tar.xz",
"sha256": "e56e794c8e1c0340445be64655577b143efccb3ea06630fa494a82e35ca92f37"
},
{
"hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d",
"channel": "stable",
"version": "1.20.1",
"release_date": "2020-08-06T17:51:18.839916Z",
"archive": "stable/linux/flutter_linux_1.20.1-stable.tar.xz",
"sha256": "a2b3bf4ffe51f702cb4e161088b197da4b11748e3807dd9c572169139888f536"
},
{
"hash": "840c9205b344a59e48a5926ee2d791cc5640924c",
"channel": "stable",
"version": "1.20.0",
"release_date": "2020-08-05T14:29:36.789739Z",
"archive": "stable/linux/flutter_linux_1.20.0-stable.tar.xz",
"sha256": "65e78629b4fe65762a3b827ab12a486a7afacf2d118d92443c2583915ba718a6"
},
{
"hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3",
"channel": "beta",
"version": "1.20.0-7.4.pre",
"release_date": "2020-08-03T21:49:15.216860Z",
"archive": "beta/linux/flutter_linux_1.20.0-7.4.pre-beta.tar.xz",
"sha256": "1258758ccb5326340ae6d0b91cc4ea86211c92e0ef03e8110c0a51465e04405e"
},
{
"hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e",
"channel": "beta",
"version": "1.20.0-7.3.pre",
"release_date": "2020-07-29T03:34:51.537375Z",
"archive": "beta/linux/flutter_linux_1.20.0-7.3.pre-beta.tar.xz",
"sha256": "c57f1ad60c29f90250df17b98158d22ee84f75f4fc0fc5d9f751a9840f055eb0"
},
{
"hash": "a2bde82fbd52e09057a4146f46889f4e10342d32",
"channel": "beta",
"version": "1.20.0-7.2.pre",
"release_date": "2020-07-21T16:18:22.967962Z",
"archive": "beta/linux/flutter_linux_1.20.0-7.2.pre-beta.tar.xz",
"sha256": "cee8248fabb80c15bc4e79434fdbffeb44cbf7261901574b525793b8cb8b0971"
},
{
"hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c",
"channel": "dev",
"version": "1.21.0-1.0.pre",
"release_date": "2020-07-17T03:24:03.608448Z",
"archive": "dev/linux/flutter_linux_1.21.0-1.0.pre-dev.tar.xz",
"sha256": "19012134087802515e5fff5e8760b385105cf2b47ff178a21a73477365423d93"
},
{
"hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85",
"channel": "dev",
"version": "1.20.0-7.1.pre",
"release_date": "2020-07-11T04:18:51.678227Z",
"archive": "dev/linux/flutter_linux_1.20.0-7.1.pre-dev.tar.xz",
"sha256": "6d9a915be565092fc5cb72d4e12e700c554e2813b38bb0b875c6bac95f1f28ea"
},
{
"hash": "cc1af3afb62187cc37185afddc2d43bfef469db7",
"channel": "dev",
"version": "1.20.0-7.0.pre",
"release_date": "2020-07-09T19:21:38.263441Z",
"archive": "dev/linux/flutter_linux_1.20.0-7.0.pre-dev.tar.xz",
"sha256": "5793bace0979c1ca08568fe5565304bbc87a8cd10c5320f77228eb08eea0e22d"
},
{
"hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3",
"channel": "dev",
"version": "1.20.0-3.0.pre",
"release_date": "2020-07-05T04:53:44.915768Z",
"archive": "dev/linux/flutter_linux_1.20.0-3.0.pre-dev.tar.xz",
"sha256": "a0b0771b9edd1a853a543aa8fdb4bbf525f8db3df5f4ef0ea0c3a0855eed255e"
},
{
"hash": "8fe7655ed20ffd1395f68e30539a847a01a30351",
"channel": "beta",
"version": "1.19.0-4.3.pre",
"release_date": "2020-07-01T23:46:59.532838Z",
"archive": "beta/linux/flutter_linux_1.19.0-4.3.pre-beta.tar.xz",
"sha256": "f70cf7a569d49fd4d159b3d4c449afd40356e08f49606c71326f14efd8de93c2"
},
{
"hash": "9b9b543d9265484132c798adaab6caca52055b08",
"channel": "beta",
"version": "1.19.0-4.2.pre",
"release_date": "2020-07-01T23:27:53.160554Z",
"archive": "beta/linux/flutter_linux_1.19.0-4.2.pre-beta.tar.xz",
"sha256": "7b76c0cb7153ec6ca4ab4cc45bf26742a89f368de3740ad1eb8b82b072e087b9"
},
{
"hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93",
"channel": "dev",
"version": "1.20.0-2.0.pre",
"release_date": "2020-07-01T23:26:51.051094Z",
"archive": "dev/linux/flutter_linux_1.20.0-2.0.pre-dev.tar.xz",
"sha256": "4cb56feb24805b4f91164c287a168d8cf92dc6d935d1b96bee72403f34b7973b"
},
{
"hash": "8af6b2f038c1172e61d418869363a28dffec3cb4",
"channel": "stable",
"version": "1.17.5",
"release_date": "2020-07-01T23:24:33.419295Z",
"archive": "stable/linux/flutter_linux_1.17.5-stable.tar.xz",
"sha256": "b1a5d01b441a92221d081f92adffb532cb081f17e05a619784ae1d688792574d"
},
{
"hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314",
"channel": "stable",
"version": "1.17.4",
"release_date": "2020-06-18T16:04:42.724586Z",
"archive": "stable/linux/flutter_linux_1.17.4-stable.tar.xz",
"sha256": "74dd0e3f3f63b8b25023eeec3460e456ee89a974ff99af4db93085e3cdcc28e3"
},
{
"hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1",
"channel": "dev",
"version": "1.20.0-0.0.pre",
"release_date": "2020-06-11T15:33:43.923597Z",
"archive": "dev/linux/flutter_linux_1.20.0-0.0.pre-dev.tar.xz",
"sha256": "ab045973c3d9bf405b90ffa144ddb67288eb9f9e0d5406c38dcc599eb8de5abe"
},
{
"hash": "f994b769743368b36b9c03fb359f62230b60ab92",
"channel": "beta",
"version": "1.19.0-4.1.pre",
"release_date": "2020-06-10T22:07:46.350990Z",
"archive": "beta/linux/flutter_linux_1.19.0-4.1.pre-beta.tar.xz",
"sha256": "626450b87c11ece65b52e817c5df1016add6ec0c6665e35b3a8d9f2e79be4a00"
},
{
"hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d",
"channel": "dev",
"version": "1.19.0-5.0.pre",
"release_date": "2020-06-09T23:56:14.424965Z",
"archive": "dev/linux/flutter_linux_1.19.0-5.0.pre-dev.tar.xz",
"sha256": "69e2ac80a8ce18adf2b280efd63cf5445b2d3060a5bd2c7c7bc75954fc22604e"
},
{
"hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653",
"channel": "dev",
"version": "1.19.0-4.0.pre",
"release_date": "2020-06-05T16:39:36.057354Z",
"archive": "dev/linux/flutter_linux_1.19.0-4.0.pre-dev.tar.xz",
"sha256": "b0f8d5d76daa63624b2715495daecef3628b156e4c93412de2653b649eaf4c96"
},
{
"hash": "b041144f833e05cf463b8887fa12efdec9493488",
"channel": "stable",
"version": "1.17.3",
"release_date": "2020-06-04T17:15:43.744344Z",
"archive": "stable/linux/flutter_linux_1.17.3-stable.tar.xz",
"sha256": "3fa0d658d651a16ccfb4be1c4f609bab1b93abfd5e13627772b803a8e0b5d59b"
},
{
"hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05",
"channel": "dev",
"version": "1.19.0-3.0.pre",
"release_date": "2020-06-02T20:25:12.215535Z",
"archive": "dev/linux/flutter_linux_1.19.0-3.0.pre-dev.tar.xz",
"sha256": "d2eac8112604c535a7a631f477b2743f3d67f3a4a1cd4c07de597b559479afb2"
},
{
"hash": "1d395c5e187370f2838bb043d3b438029b484bfc",
"channel": "dev",
"version": "1.19.0-2.0.pre",
"release_date": "2020-06-01T17:41:58.968805Z",
"archive": "dev/linux/flutter_linux_1.19.0-2.0.pre-dev.tar.xz",
"sha256": "0cca4b2b968ec0d568c5799b8e31cbda2a932962a85bcf408d82a0de075d2dcd"
},
{
"hash": "5f21edf8b66e31a39133177319414395cc5b5f48",
"channel": "stable",
"version": "1.17.2",
"release_date": "2020-05-28T21:45:26.846070Z",
"archive": "stable/linux/flutter_linux_1.17.2-stable.tar.xz",
"sha256": "c74e72a190766a1ecd5b8922bcbb66d0e698e7bcb66533c645659d1e66cd52bc"
},
{
"hash": "2738a1148ba6c9a6114df62358109407c3ef2553",
"channel": "beta",
"version": "1.18.0-11.1.pre",
"release_date": "2020-05-14T17:55:40.355488Z",
"archive": "beta/linux/flutter_linux_1.18.0-11.1.pre-beta.tar.xz",
"sha256": "ec4535ec5bdb0f3d7549a81a31a8975febe998efafae44806cdb37173513cc55"
},
{
"hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe",
"channel": "stable",
"version": "1.17.1",
"release_date": "2020-05-13T18:12:10.369553Z",
"archive": "stable/linux/flutter_linux_1.17.1-stable.tar.xz",
"sha256": "ae40bc83504c147229b34755892e8df36678e312f66117904deaff2c8faf4a21"
},
{
"hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8",
"channel": "dev",
"version": "1.19.0-1.0.pre",
"release_date": "2020-05-12T22:42:16.142124Z",
"archive": "dev/linux/flutter_linux_1.19.0-1.0.pre-dev.tar.xz",
"sha256": "11c832731aa9ec783d5ed8ea0f14eb9f820cdf6e2850ea6367b034c15216b126"
},
{
"hash": "a849daf2836d653ef80e01f428531b3f787671cb",
"channel": "dev",
"version": "1.19.0-0.0.pre",
"release_date": "2020-05-08T19:40:11.308167Z",
"archive": "dev/linux/flutter_linux_1.19.0-0.0.pre-dev.tar.xz",
"sha256": "42a5f53123b864927f884c85eaf9f2183daa67b2db6a0d35fe6a384af4efe309"
},
{
"hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81",
"channel": "dev",
"version": "1.18.0-13.0.pre",
"release_date": "2020-05-07T17:15:45.535198Z",
"archive": "dev/linux/flutter_linux_1.18.0-13.0.pre-dev.tar.xz",
"sha256": "c55739c77a5ec42c07405d250fb503359c888a7a8f6d9c6f3230d859ed7813d8"
},
{
"hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320",
"channel": "dev",
"version": "1.18.0-12.0.pre",
"release_date": "2020-05-06T22:11:06.703984Z",
"archive": "dev/linux/flutter_linux_1.18.0-12.0.pre-dev.tar.xz",
"sha256": "8cd4f14ddae89e14b54b6c3d7ba53e658f46872685340d70198456a8b15f7163"
},
{
"hash": "8568eda15b2527afd48622257cee3811e0d9da04",
"channel": "dev",
"version": "1.18.0-11.0.pre",
"release_date": "2020-05-06T18:45:38.119972Z",
"archive": "dev/linux/flutter_linux_1.18.0-11.0.pre-dev.tar.xz",
"sha256": "192c66e99e7b153544231d02d05e506d7b3550392a4df5b5b76abcaae94f1560"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "stable",
"version": "1.17.0",
"release_date": "2020-05-06T14:34:15.140240Z",
"archive": "stable/linux/flutter_linux_1.17.0-stable.tar.xz",
"sha256": "8e46dae83f30d0d4e42e32ef467b201ddb9b90adb0349538cb7c4fe8d0a8b3ab"
},
{
"hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05",
"channel": "dev",
"version": "1.18.0-10.0.pre",
"release_date": "2020-05-06T01:46:06.990181Z",
"archive": "dev/linux/flutter_linux_1.18.0-10.0.pre-dev.tar.xz",
"sha256": "784f8e20f8739dfd301ccdcd77bf1beea3ed4eb4b02ca44ba9dae6a36a5ccfda"
},
{
"hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975",
"channel": "dev",
"version": "1.18.0-9.0.pre",
"release_date": "2020-05-05T23:13:38.294534Z",
"archive": "dev/linux/flutter_linux_1.18.0-9.0.pre-dev.tar.xz",
"sha256": "14203a17699bf80bf885e124cef2f4b341d85d5785ce8b1256e3784dbf9f1b77"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "beta",
"version": "1.17.0-3.4.pre",
"release_date": "2020-05-02T20:36:26.070374Z",
"archive": "beta/linux/flutter_linux_1.17.0-3.4.pre-beta.tar.xz",
"sha256": "6521baa72c422dd5c1c9f95e8d98e97272c3276f6ceebda826b2d38715346aa5"
},
{
"hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534",
"channel": "beta",
"version": "1.17.0-3.3.pre",
"release_date": "2020-04-29T00:00:51.503450Z",
"archive": "beta/linux/flutter_linux_1.17.0-3.3.pre-beta.tar.xz",
"sha256": "28ffc3c54544cf78b416761fb480ffd82bd49f9fc9571ba083d3337b4faf675a"
},
{
"hash": "e0c63cd35e15e407a80dc44281cc392535fcce25",
"channel": "dev",
"version": "1.18.0-8.0.pre",
"release_date": "2020-04-24T16:42:21.099303Z",
"archive": "dev/linux/flutter_linux_1.18.0-8.0.pre-dev.tar.xz",
"sha256": "e51099074ebbf0bde6d11161f62ff3414210dcf89298a401dcb9360387185389"
},
{
"hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9",
"channel": "dev",
"version": "1.18.0-7.0.pre",
"release_date": "2020-04-24T13:01:43.529635Z",
"archive": "dev/linux/flutter_linux_1.18.0-7.0.pre-dev.tar.xz",
"sha256": "9e724a87d2627391249027125d46b0442c23e054f73ac7603634aeb8d94c548a"
},
{
"hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e",
"channel": "beta",
"version": "1.17.0-3.2.pre",
"release_date": "2020-04-22T17:16:41.221090Z",
"archive": "beta/linux/flutter_linux_1.17.0-3.2.pre-beta.tar.xz",
"sha256": "9bae19fe9adf50ed01058ac287a48417a7c3354cec09daa3494d3b033c2dcd83"
},
{
"hash": "84c84fb24914e098667649be04614f6ea19d689c",
"channel": "dev",
"version": "1.18.0-6.0.pre",
"release_date": "2020-04-21T22:15:53.662665Z",
"archive": "dev/linux/flutter_linux_1.18.0-6.0.pre-dev.tar.xz",
"sha256": "4983ecc776316e678bed6742310d0c2c41fdc1b8748135ac9c5ae0571f2a82b5"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-17T21:40:00.498256Z",
"archive": "stable/linux/flutter_linux_v1.12.13+hotfix.9-stable.tar.xz",
"sha256": "3f241c6237078338a0568d1e161f5d4b6d47ea3af377c9522d17223a9bb94c96"
},
{
"hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"channel": "dev",
"version": "1.18.0-dev.5.0",
"release_date": "2020-04-13T16:16:16.135501Z",
"release_date": "2020-04-17T21:38:14.667745Z",
"archive": "dev/linux/flutter_linux_1.18.0-dev.5.0-dev.tar.xz",
"sha256": "7c6c396b31bc0e01f805c3aa64d149e642e4db7374e8838a080a8c7f19134c8b"
"sha256": "83d457e42c8d0d535a13001324d3deea88b8225a42753a9ac05ce0983f5c5637"
},
{
"hash": "8f7327f83a3e094285163ae402c6f94190fc1674",
@@ -94,14 +542,6 @@
"archive": "dev/linux/flutter_linux_1.17.0-dev.2.0-dev.tar.xz",
"sha256": "9c1c6f8435229005adeac06139dc16f90a4de17d8f9d4081ddf7b606406e3ce1"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-01T22:21:46.878880Z",
"archive": "stable/linux/flutter_linux_v1.12.13+hotfix.9-stable.tar.xz",
"sha256": "3eb8f81d6077932d4bc05eb57146de06135095ea525130fc21f39759ebfe83e2"
},
{
"hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0",
"channel": "dev",

View File

@@ -1,18 +1,466 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
"current_release": {
"beta": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98",
"dev": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"stable": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3"
"beta": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"dev": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"stable": "d408d302e22179d598f467e11da5dd968dbdc9ec"
},
"releases": [
{
"hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"channel": "dev",
"version": "1.23.0-7.0.pre",
"release_date": "2020-10-01T23:22:14.973873Z",
"archive": "dev/macos/flutter_macos_1.23.0-7.0.pre-dev.zip",
"sha256": "e4f8a9a4f960a7770acab9c9d02992f42473f47252e74dfa4d29cbc4edab05fa"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "stable",
"version": "1.22.0",
"release_date": "2020-10-01T14:23:41.609321Z",
"archive": "stable/macos/flutter_macos_1.22.0-stable.zip",
"sha256": "d9663e5fe5fe6ee44ce04dd43d9626fc14db16c3b8d0a6e8ae666f5e6cf51ca4"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "beta",
"version": "1.22.0-12.3.pre",
"release_date": "2020-09-29T20:25:43.820625Z",
"archive": "beta/macos/flutter_macos_1.22.0-12.3.pre-beta.zip",
"sha256": "68a43dadb778df49d2db916ec72d1d3b8f0f54ec0b59eb5626bd0fcbfbd09f27"
},
{
"hash": "2bafdc822636426fa09afb43236400a60ea432b2",
"channel": "beta",
"version": "1.22.0-12.2.pre",
"release_date": "2020-09-28T16:44:47.932346Z",
"archive": "beta/macos/flutter_macos_1.22.0-12.2.pre-beta.zip",
"sha256": "1401271f35f3dc342dafe3a89de038bf24b9c80527a86f8e3451136e1e353371"
},
{
"hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1",
"channel": "dev",
"version": "1.23.0-4.0.pre",
"release_date": "2020-09-22T21:10:12.999195Z",
"archive": "dev/macos/flutter_macos_1.23.0-4.0.pre-dev.zip",
"sha256": "5abb85db2cb3be610f9e48688eee098abe5ea9c7ca447d2085e41dd54ebd5bc9"
},
{
"hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5",
"channel": "beta",
"version": "1.22.0-12.1.pre",
"release_date": "2020-09-16T17:09:41.228493Z",
"archive": "beta/macos/flutter_macos_1.22.0-12.1.pre-beta.zip",
"sha256": "cf7d43bde41eef8d2e09e0f192eecb43e1ffc2dcb2a7e91df5c496ebae3ec3a4"
},
{
"hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89",
"channel": "stable",
"version": "1.20.4",
"release_date": "2020-09-15T17:40:12.045259Z",
"archive": "stable/macos/flutter_macos_1.20.4-stable.zip",
"sha256": "08fcbcc9c902bc6f245d660b6d68f1da420fbdd5878902b5687961a5fb43e9f7"
},
{
"hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb",
"channel": "dev",
"version": "1.22.0-12.0.pre",
"release_date": "2020-09-14T21:42:02.011366Z",
"archive": "dev/macos/flutter_macos_1.22.0-12.0.pre-dev.zip",
"sha256": "6d5c56d43a82008f03d5dd7fe275d32faa5c804f6416dd85b1dd56471fbb907f"
},
{
"hash": "216dee60c0cc9449f0b29bcf922974d612263e24",
"channel": "stable",
"version": "1.20.3",
"release_date": "2020-09-02T18:06:18.341367Z",
"archive": "stable/macos/flutter_macos_1.20.3-stable.zip",
"sha256": "f68740137fb15f627667ec2eab39d83afeb3396c96ab268b78c67c092f5c8b18"
},
{
"hash": "7a4317519865146acda84702bba8775610598c0c",
"channel": "dev",
"version": "1.22.0-9.0.pre",
"release_date": "2020-09-01T19:28:22.697842Z",
"archive": "dev/macos/flutter_macos_1.22.0-9.0.pre-dev.zip",
"sha256": "3f5d6311e67c2dfe46adb8fddaadcd966f129878e8fd22edc4539cb2cab93fc9"
},
{
"hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d",
"channel": "beta",
"version": "1.21.0-9.2.pre",
"release_date": "2020-08-28T18:33:54.145026Z",
"archive": "beta/macos/flutter_macos_1.21.0-9.2.pre-beta.zip",
"sha256": "717bff28f1a32a969bcae559ffa17cc00069b25cb94d4fb16e97f5ee9735edf2"
},
{
"hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6",
"channel": "dev",
"version": "1.22.0-1.0.pre",
"release_date": "2020-08-21T21:59:25.678368Z",
"archive": "dev/macos/flutter_macos_1.22.0-1.0.pre-dev.zip",
"sha256": "6ffa83341c43c8a05ec3f853a95deda5deefb4790a3236a5d739601d1d30f949"
},
{
"hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18",
"channel": "beta",
"version": "1.21.0-9.1.pre",
"release_date": "2020-08-19T18:35:17.762947Z",
"archive": "beta/macos/flutter_macos_1.21.0-9.1.pre-beta.zip",
"sha256": "c04afcdfd5625508f5641232555620dc1cb9c30f0e93fb5feec10bb7523c87a6"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "beta",
"version": "1.20.2",
"release_date": "2020-08-14T20:58:13.245691Z",
"archive": "beta/macos/flutter_macos_1.20.2-beta.zip",
"sha256": "3f6fe6fecf7d91b6d78a3d64cd2c577f7d4202e03f38cdac584462a438918b38"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "stable",
"version": "1.20.2",
"release_date": "2020-08-13T21:40:50.579223Z",
"archive": "stable/macos/flutter_macos_1.20.2-stable.zip",
"sha256": "c801653e989811b60f79d3edffa808bd1fba5b771ba8492bfc53ea49302afc0e"
},
{
"hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083",
"channel": "dev",
"version": "1.21.0-9.0.pre",
"release_date": "2020-08-13T16:03:32.942694Z",
"archive": "dev/macos/flutter_macos_1.21.0-9.0.pre-dev.zip",
"sha256": "d36444994adb5b29272827a052516180eef00cc40a14ec19b70f3a62012a7335"
},
{
"hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97",
"channel": "dev",
"version": "1.21.0-7.0.pre",
"release_date": "2020-08-07T16:41:15.680848Z",
"archive": "dev/macos/flutter_macos_1.21.0-7.0.pre-dev.zip",
"sha256": "fde3be8d09c7c572f5ab2f4d747bec2fa47ef43b0a5c7add803fc735fa625453"
},
{
"hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d",
"channel": "stable",
"version": "1.20.1",
"release_date": "2020-08-06T18:37:40.752145Z",
"archive": "stable/macos/flutter_macos_1.20.1-stable.zip",
"sha256": "a6364d48455bd7eb749bcbd0b7c71b985bccb0149ea0dd95c6bef3bbb2e9f91b"
},
{
"hash": "840c9205b344a59e48a5926ee2d791cc5640924c",
"channel": "stable",
"version": "1.20.0",
"release_date": "2020-08-05T14:21:17.293576Z",
"archive": "stable/macos/flutter_macos_1.20.0-stable.zip",
"sha256": "e49f8b63470244a472f08c62e770fed08e15e1e994dcdb28ea03acdc937011be"
},
{
"hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3",
"channel": "beta",
"version": "1.20.0-7.4.pre",
"release_date": "2020-08-03T21:40:41.560256Z",
"archive": "beta/macos/flutter_macos_1.20.0-7.4.pre-beta.zip",
"sha256": "be8b2bc2125f9099fe4210d4c04654ed6b48b86a3056169599224e8afa9610fc"
},
{
"hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e",
"channel": "beta",
"version": "1.20.0-7.3.pre",
"release_date": "2020-07-29T03:26:03.419026Z",
"archive": "beta/macos/flutter_macos_1.20.0-7.3.pre-beta.zip",
"sha256": "54b101d047811e341629fd2408ad7df8bbdfcefa3b4354c6f44d566f714fa2dc"
},
{
"hash": "a2bde82fbd52e09057a4146f46889f4e10342d32",
"channel": "beta",
"version": "1.20.0-7.2.pre",
"release_date": "2020-07-21T16:15:05.642652Z",
"archive": "beta/macos/flutter_macos_1.20.0-7.2.pre-beta.zip",
"sha256": "ead0524aa5262f872e369448f6ee1eccdfb0636704c8d4208a4ab2ec6da87a15"
},
{
"hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c",
"channel": "dev",
"version": "1.21.0-1.0.pre",
"release_date": "2020-07-17T03:16:08.438489Z",
"archive": "dev/macos/flutter_macos_1.21.0-1.0.pre-dev.zip",
"sha256": "fc9592842d859d1a6619d5302c97eb56bf587f7bcb984283289954933ae3d23d"
},
{
"hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85",
"channel": "dev",
"version": "1.20.0-7.1.pre",
"release_date": "2020-07-11T04:09:49.782032Z",
"archive": "dev/macos/flutter_macos_1.20.0-7.1.pre-dev.zip",
"sha256": "198ecee004963b5f5320f7499b5ed734dbb497e320c3178b6e5a0066de8d3e0c"
},
{
"hash": "cc1af3afb62187cc37185afddc2d43bfef469db7",
"channel": "dev",
"version": "1.20.0-7.0.pre",
"release_date": "2020-07-09T19:11:22.337305Z",
"archive": "dev/macos/flutter_macos_1.20.0-7.0.pre-dev.zip",
"sha256": "e4e40e6c2c765239ed53b5199c97bf37e6e51d7478a387d351ea06881b5461f5"
},
{
"hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3",
"channel": "dev",
"version": "1.20.0-3.0.pre",
"release_date": "2020-07-05T02:20:08.815663Z",
"archive": "dev/macos/flutter_macos_1.20.0-3.0.pre-dev.zip",
"sha256": "9359b5a798858360974261b69510e8c952e90837530a82223951beb52b40797a"
},
{
"hash": "8fe7655ed20ffd1395f68e30539a847a01a30351",
"channel": "beta",
"version": "1.19.0-4.3.pre",
"release_date": "2020-07-01T23:42:10.067590Z",
"archive": "beta/macos/flutter_macos_1.19.0-4.3.pre-beta.zip",
"sha256": "f3621cfddee8e592d3e0b926a14f14b5466a702e52d1009b6e5dd2cc18d9b5ef"
},
{
"hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93",
"channel": "dev",
"version": "1.20.0-2.0.pre",
"release_date": "2020-07-01T23:17:53.874444Z",
"archive": "dev/macos/flutter_macos_1.20.0-2.0.pre-dev.zip",
"sha256": "fd16b754ef33a33611e1e6dbb6b8498cc3722db4eef3e0ec93266f719f6f51ad"
},
{
"hash": "8af6b2f038c1172e61d418869363a28dffec3cb4",
"channel": "stable",
"version": "1.17.5",
"release_date": "2020-07-01T23:16:58.968722Z",
"archive": "stable/macos/flutter_macos_1.17.5-stable.zip",
"sha256": "8fcb853546956f816d2c181fb8f7c7ba7539da96070af353a713745b2d63ed97"
},
{
"hash": "9b9b543d9265484132c798adaab6caca52055b08",
"channel": "beta",
"version": "1.19.0-4.2.pre",
"release_date": "2020-06-25T20:04:18.776389Z",
"archive": "beta/macos/flutter_macos_1.19.0-4.2.pre-beta.zip",
"sha256": "c838f78ccc9a10b73e3ccdf216f142365a6f92aefefcf8985c4ca7c2ddb0ce59"
},
{
"hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314",
"channel": "stable",
"version": "1.17.4",
"release_date": "2020-06-18T15:57:50.856625Z",
"archive": "stable/macos/flutter_macos_1.17.4-stable.zip",
"sha256": "1464da8422e0fd70ba93dab257d77e3a60fee06ac081296c32255635d6328e48"
},
{
"hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1",
"channel": "dev",
"version": "1.20.0-0.0.pre",
"release_date": "2020-06-11T15:25:15.356574Z",
"archive": "dev/macos/flutter_macos_1.20.0-0.0.pre-dev.zip",
"sha256": "b32a063548db297c40985fc67f27230ab49baea6248179cfc9d95ed1cda13101"
},
{
"hash": "f994b769743368b36b9c03fb359f62230b60ab92",
"channel": "beta",
"version": "1.19.0-4.1.pre",
"release_date": "2020-06-10T21:59:36.901924Z",
"archive": "beta/macos/flutter_macos_1.19.0-4.1.pre-beta.zip",
"sha256": "a09a01f9c4aa6c37fd4006ed23a33a684073ebc4fca6881ef52674beb490e443"
},
{
"hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d",
"channel": "dev",
"version": "1.19.0-5.0.pre",
"release_date": "2020-06-10T01:01:52.476109Z",
"archive": "dev/macos/flutter_macos_1.19.0-5.0.pre-dev.zip",
"sha256": "158baa1c91db850752ea7df69ef3f8d5218729e66188096ce778362e54bafdd9"
},
{
"hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653",
"channel": "dev",
"version": "1.19.0-4.0.pre",
"release_date": "2020-06-05T16:28:34.028693Z",
"archive": "dev/macos/flutter_macos_1.19.0-4.0.pre-dev.zip",
"sha256": "05df42fddfbc29f4d9ae96b3ab4bd983790a56e00d137bfdf98658b4b450f89c"
},
{
"hash": "b041144f833e05cf463b8887fa12efdec9493488",
"channel": "stable",
"version": "1.17.3",
"release_date": "2020-06-04T17:24:41.587754Z",
"archive": "stable/macos/flutter_macos_1.17.3-stable.zip",
"sha256": "4506b3ab985f86a7a5b7a65ba2377b7407395e993c5094b9c843cbc4c798eb92"
},
{
"hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05",
"channel": "dev",
"version": "1.19.0-3.0.pre",
"release_date": "2020-06-02T20:22:58.335734Z",
"archive": "dev/macos/flutter_macos_1.19.0-3.0.pre-dev.zip",
"sha256": "659015af8363474169ddbb4f224f659a6779cc23314232982efd2b4bf95dbaf1"
},
{
"hash": "1d395c5e187370f2838bb043d3b438029b484bfc",
"channel": "dev",
"version": "1.19.0-2.0.pre",
"release_date": "2020-06-01T17:29:12.998120Z",
"archive": "dev/macos/flutter_macos_1.19.0-2.0.pre-dev.zip",
"sha256": "e5feb3916c503b72aa3a3c5f90e265fd80c5c4794c8b167231a794750fd5e1ee"
},
{
"hash": "5f21edf8b66e31a39133177319414395cc5b5f48",
"channel": "stable",
"version": "1.17.2",
"release_date": "2020-05-28T21:39:28.327910Z",
"archive": "stable/macos/flutter_macos_1.17.2-stable.zip",
"sha256": "f692118a4e9da5372128ed2c882bc4ca8e3ed7aac4efa4ad2346ca54b9cda8ec"
},
{
"hash": "2738a1148ba6c9a6114df62358109407c3ef2553",
"channel": "beta",
"version": "1.18.0-11.1.pre",
"release_date": "2020-05-14T17:48:04.712994Z",
"archive": "beta/macos/flutter_macos_1.18.0-11.1.pre-beta.zip",
"sha256": "a33d0f96c9f4abd984efa591ee10c502039c186a0719df8b688b6df1e0d79969"
},
{
"hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe",
"channel": "stable",
"version": "1.17.1",
"release_date": "2020-05-13T18:22:25.737914Z",
"archive": "stable/macos/flutter_macos_1.17.1-stable.zip",
"sha256": "598c6341e43421257a57fc17e82f000eb2df3ed9593e6d698fd2a2f62fe1c829"
},
{
"hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8",
"channel": "dev",
"version": "1.19.0-1.0.pre",
"release_date": "2020-05-12T22:34:16.114113Z",
"archive": "dev/macos/flutter_macos_1.19.0-1.0.pre-dev.zip",
"sha256": "9f4c8384a068afb5b9412f9160d0e709cdaa015014dba9b011bf79761435ee9b"
},
{
"hash": "a849daf2836d653ef80e01f428531b3f787671cb",
"channel": "dev",
"version": "1.19.0-0.0.pre",
"release_date": "2020-05-08T19:46:14.912454Z",
"archive": "dev/macos/flutter_macos_1.19.0-0.0.pre-dev.zip",
"sha256": "f6f76179ec0a41a4e2a0ffec86f597202a170b56c1f61fa77ca192bd20e91392"
},
{
"hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81",
"channel": "dev",
"version": "1.18.0-13.0.pre",
"release_date": "2020-05-07T17:09:23.786153Z",
"archive": "dev/macos/flutter_macos_1.18.0-13.0.pre-dev.zip",
"sha256": "28fad6caa962f39e7812036d618177dde622bc31db439e20fc2b858033bf8bab"
},
{
"hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320",
"channel": "dev",
"version": "1.18.0-12.0.pre",
"release_date": "2020-05-06T22:16:10.230309Z",
"archive": "dev/macos/flutter_macos_1.18.0-12.0.pre-dev.zip",
"sha256": "700dfa145ce14252f6e2c5de8c90eae5b59fc0754a13eabcae7cb96a6db6def7"
},
{
"hash": "8568eda15b2527afd48622257cee3811e0d9da04",
"channel": "dev",
"version": "1.18.0-11.0.pre",
"release_date": "2020-05-06T18:38:24.827439Z",
"archive": "dev/macos/flutter_macos_1.18.0-11.0.pre-dev.zip",
"sha256": "d19ac11a33463f93b68ba5d4a703af00db35e3cb1b192d09aa859963f7829909"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "stable",
"version": "1.17.0",
"release_date": "2020-05-06T14:26:41.824920Z",
"archive": "stable/macos/flutter_macos_1.17.0-stable.zip",
"sha256": "0105b4c12d8c5d5f548befd0eabcd633a2ae8cea686635b199ff363337d756a5"
},
{
"hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05",
"channel": "dev",
"version": "1.18.0-10.0.pre",
"release_date": "2020-05-06T01:38:25.613571Z",
"archive": "dev/macos/flutter_macos_1.18.0-10.0.pre-dev.zip",
"sha256": "5353ed9558ffc67615cfc50936b2a9d04735eac29d79ed00e8700fe98c6dc4e2"
},
{
"hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975",
"channel": "dev",
"version": "1.18.0-9.0.pre",
"release_date": "2020-05-05T23:05:01.013229Z",
"archive": "dev/macos/flutter_macos_1.18.0-9.0.pre-dev.zip",
"sha256": "b93996bf6bec930ca035bec0d5be2511a902fc98f2189c483dbeeb8c959dc6cc"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "beta",
"version": "1.17.0-3.4.pre",
"release_date": "2020-05-02T20:29:29.123505Z",
"archive": "beta/macos/flutter_macos_1.17.0-3.4.pre-beta.zip",
"sha256": "fa89547b82b589d0ab5af735b6d0325e8ef75b877e62d92bc93693fb5b878022"
},
{
"hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534",
"channel": "beta",
"version": "1.17.0-3.3.pre",
"release_date": "2020-04-28T23:56:09.473354Z",
"archive": "beta/macos/flutter_macos_1.17.0-3.3.pre-beta.zip",
"sha256": "c3347b036a2367c1d5c3637f3c537a3b7989802b2a137ecb72ec962ba4c35a04"
},
{
"hash": "e0c63cd35e15e407a80dc44281cc392535fcce25",
"channel": "dev",
"version": "1.18.0-8.0.pre",
"release_date": "2020-04-24T16:36:14.866671Z",
"archive": "dev/macos/flutter_macos_1.18.0-8.0.pre-dev.zip",
"sha256": "533bad8371ec7a25b3d87ec6f5c568cc74fdf030d0318d0a12e5778764b68a46"
},
{
"hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9",
"channel": "dev",
"version": "1.18.0-7.0.pre",
"release_date": "2020-04-24T12:53:53.875600Z",
"archive": "dev/macos/flutter_macos_1.18.0-7.0.pre-dev.zip",
"sha256": "c9e7074775177d367cba352c3f874c0dce5d5d714ab26247cafbbff68ad7e7ab"
},
{
"hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e",
"channel": "beta",
"version": "1.17.0-3.2.pre",
"release_date": "2020-04-22T17:09:29.829025Z",
"archive": "beta/macos/flutter_macos_1.17.0-3.2.pre-beta.zip",
"sha256": "d4b64277f3a3cd08ac43c3e7462351a5f00f627da263ab9d7cd3f0086032714e"
},
{
"hash": "84c84fb24914e098667649be04614f6ea19d689c",
"channel": "dev",
"version": "1.18.0-6.0.pre",
"release_date": "2020-04-21T22:07:36.080108Z",
"archive": "dev/macos/flutter_macos_1.18.0-6.0.pre-dev.zip",
"sha256": "46f637fbec5ae2f97439ca251a3abd34916ae19c0dfd81a1dd46f80234647d5d"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-17T21:31:56.721907Z",
"archive": "stable/macos/flutter_macos_v1.12.13+hotfix.9-stable.zip",
"sha256": "395c44e40399150cddf459216ac4e4d70a1c20b48ac8476576a8b36230c3701e"
},
{
"hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"channel": "dev",
"version": "1.18.0-dev.5.0",
"release_date": "2020-04-13T16:08:09.027549Z",
"release_date": "2020-04-17T21:29:59.523842Z",
"archive": "dev/macos/flutter_macos_1.18.0-dev.5.0-dev.zip",
"sha256": "74419b298d1b0b473f61763d781be208e7f938b169e56cef42b513212f2be3d2"
"sha256": "58966488e5bcd8fff81850796a3c18017dc8768c2815cbe47451c1cd2797f52a"
},
{
"hash": "8f7327f83a3e094285163ae402c6f94190fc1674",
@@ -94,14 +542,6 @@
"archive": "dev/macos/flutter_macos_1.17.0-dev.2.0-dev.zip",
"sha256": "d77264e29b6c9cfe7f32d2ebf01b0ade1997ad418a6e486f1c6a516f422900d1"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-01T22:11:43.043754Z",
"archive": "stable/macos/flutter_macos_v1.12.13+hotfix.9-stable.zip",
"sha256": "b92ee92b9e8dce901c2425985b3f4a5f9fc8a7d80cb3970c86241c83e70f1a1d"
},
{
"hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0",
"channel": "dev",

View File

@@ -1,11 +1,459 @@
{
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
"current_release": {
"beta": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98",
"dev": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"stable": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3"
"beta": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"dev": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"stable": "d408d302e22179d598f467e11da5dd968dbdc9ec"
},
"releases": [
{
"hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0",
"channel": "dev",
"version": "1.23.0-7.0.pre",
"release_date": "2020-10-01T23:23:47.131642Z",
"archive": "dev/windows/flutter_windows_1.23.0-7.0.pre-dev.zip",
"sha256": "9e1ae41f8dd826fca87df7403e24cffe68c8949e32241fbc256c24e7793e8403"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "stable",
"version": "1.22.0",
"release_date": "2020-10-01T14:26:12.579271Z",
"archive": "stable/windows/flutter_windows_1.22.0-stable.zip",
"sha256": "7af70a3d159656f4c0d695a68eb3031bb2fb4381384866551308962367d24ac2"
},
{
"hash": "d408d302e22179d598f467e11da5dd968dbdc9ec",
"channel": "beta",
"version": "1.22.0-12.3.pre",
"release_date": "2020-09-29T20:21:55.098247Z",
"archive": "beta/windows/flutter_windows_1.22.0-12.3.pre-beta.zip",
"sha256": "24c2c47c9dfbe50f9cd3a9bce72bcb0c5f17926db6b653c004d8a4bf92838f94"
},
{
"hash": "2bafdc822636426fa09afb43236400a60ea432b2",
"channel": "beta",
"version": "1.22.0-12.2.pre",
"release_date": "2020-09-28T16:42:43.574873Z",
"archive": "beta/windows/flutter_windows_1.22.0-12.2.pre-beta.zip",
"sha256": "fc5e70612bec2350cd68c4a5f93de5196b72208b9c65af19d4f1bd55a0daca88"
},
{
"hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1",
"channel": "dev",
"version": "1.23.0-4.0.pre",
"release_date": "2020-09-22T21:12:48.856721Z",
"archive": "dev/windows/flutter_windows_1.23.0-4.0.pre-dev.zip",
"sha256": "3847dc6add2caad5c8bfd5820fb2ce6ce4a404094f1ab664d1c881b9194d92a5"
},
{
"hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5",
"channel": "beta",
"version": "1.22.0-12.1.pre",
"release_date": "2020-09-16T17:12:50.559705Z",
"archive": "beta/windows/flutter_windows_1.22.0-12.1.pre-beta.zip",
"sha256": "a779a5d41233affa1460d3a4152b343df3d2bacf7be1eeedfd777c1fa6c21b3f"
},
{
"hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89",
"channel": "stable",
"version": "1.20.4",
"release_date": "2020-09-15T17:43:40.376494Z",
"archive": "stable/windows/flutter_windows_1.20.4-stable.zip",
"sha256": "8b52de9ae41bc2d51ca5ceb752c5fac52cd468fde5e8524a0238319d357ceaa1"
},
{
"hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb",
"channel": "dev",
"version": "1.22.0-12.0.pre",
"release_date": "2020-09-14T21:45:02.784616Z",
"archive": "dev/windows/flutter_windows_1.22.0-12.0.pre-dev.zip",
"sha256": "65b7f68bce2f73c0881f127e68d376bffa3bbe90757a7bced19698b673085964"
},
{
"hash": "216dee60c0cc9449f0b29bcf922974d612263e24",
"channel": "stable",
"version": "1.20.3",
"release_date": "2020-09-02T18:00:39.551574Z",
"archive": "stable/windows/flutter_windows_1.20.3-stable.zip",
"sha256": "2aa3569cd268e5fd3c50e6312821708c1af17337a1b1a0beb6737bf4353d7371"
},
{
"hash": "7a4317519865146acda84702bba8775610598c0c",
"channel": "dev",
"version": "1.22.0-9.0.pre",
"release_date": "2020-09-01T19:30:46.508965Z",
"archive": "dev/windows/flutter_windows_1.22.0-9.0.pre-dev.zip",
"sha256": "bf6b52e21810388d154f8b16ecea8890ecac3d21e39577084f4426d932c0899d"
},
{
"hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d",
"channel": "beta",
"version": "1.21.0-9.2.pre",
"release_date": "2020-08-28T18:32:42.466122Z",
"archive": "beta/windows/flutter_windows_1.21.0-9.2.pre-beta.zip",
"sha256": "496c23fdde65a276f8b8b7bf9e9d0735e6428e8106bd14759074601e53923076"
},
{
"hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6",
"channel": "dev",
"version": "1.22.0-1.0.pre",
"release_date": "2020-08-21T22:00:57.926158Z",
"archive": "dev/windows/flutter_windows_1.22.0-1.0.pre-dev.zip",
"sha256": "3023efc5cf6be1276ae42f85b3b9975fa244e12776b6f96094b44a4e5b2cee31"
},
{
"hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18",
"channel": "beta",
"version": "1.21.0-9.1.pre",
"release_date": "2020-08-19T18:37:55.123838Z",
"archive": "beta/windows/flutter_windows_1.21.0-9.1.pre-beta.zip",
"sha256": "81ffd2796d04cae103ffd9480b1f0ab34eba902aa5c9a2da318f3e3d61ac6d99"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "beta",
"version": "1.20.2",
"release_date": "2020-08-14T21:00:53.043744Z",
"archive": "beta/windows/flutter_windows_1.20.2-beta.zip",
"sha256": "a9ea4612b7c448b2f53786fcb5982699729cf3fac9ef8148e5de2708a3d3e646"
},
{
"hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6",
"channel": "stable",
"version": "1.20.2",
"release_date": "2020-08-13T21:43:56.996853Z",
"archive": "stable/windows/flutter_windows_1.20.2-stable.zip",
"sha256": "479ea0d2d0b15daa6f4c2f0407aa04a886a064b3597e2bd0cb61f69249aaf16e"
},
{
"hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083",
"channel": "dev",
"version": "1.21.0-9.0.pre",
"release_date": "2020-08-13T17:29:33.581848Z",
"archive": "dev/windows/flutter_windows_1.21.0-9.0.pre-dev.zip",
"sha256": "cbeb33cc4a0961c7e282cfa512cbc15e969e62517425ea3a47e9882cacb64fd0"
},
{
"hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97",
"channel": "dev",
"version": "1.21.0-7.0.pre",
"release_date": "2020-08-07T16:44:28.611131Z",
"archive": "dev/windows/flutter_windows_1.21.0-7.0.pre-dev.zip",
"sha256": "ae0a4e989c3ef7219bb18e95647d28948d6c48b57557560fbdd0d935971b0b26"
},
{
"hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d",
"channel": "stable",
"version": "1.20.1",
"release_date": "2020-08-06T17:44:31.651593Z",
"archive": "stable/windows/flutter_windows_1.20.1-stable.zip",
"sha256": "4f64942e69805d9ae41016a4825909f19c6cdc907271cb26f1c5780d22ae482a"
},
{
"hash": "840c9205b344a59e48a5926ee2d791cc5640924c",
"channel": "stable",
"version": "1.20.0",
"release_date": "2020-08-05T14:24:47.740041Z",
"archive": "stable/windows/flutter_windows_1.20.0-stable.zip",
"sha256": "9433d4b3dcccdb88afee09be9f51f2aad60db1726577589b95f4f0975bc1d742"
},
{
"hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3",
"channel": "beta",
"version": "1.20.0-7.4.pre",
"release_date": "2020-08-03T21:42:52.456598Z",
"archive": "beta/windows/flutter_windows_1.20.0-7.4.pre-beta.zip",
"sha256": "a6d8a16dc33c4fe0648a1b67a5d0a45acb617ca8378f6167291a1255c4fd7a32"
},
{
"hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e",
"channel": "beta",
"version": "1.20.0-7.3.pre",
"release_date": "2020-07-29T03:28:05.942742Z",
"archive": "beta/windows/flutter_windows_1.20.0-7.3.pre-beta.zip",
"sha256": "aa8f9c088790b164290a631cbd8e7b40632aed097a44bb051d158ededaf45008"
},
{
"hash": "a2bde82fbd52e09057a4146f46889f4e10342d32",
"channel": "beta",
"version": "1.20.0-7.2.pre",
"release_date": "2020-07-21T16:12:48.588988Z",
"archive": "beta/windows/flutter_windows_1.20.0-7.2.pre-beta.zip",
"sha256": "f6db3fb22adb60c84c649718bc7555e8fc5e84cbf6aae197e58af7c5068fe992"
},
{
"hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c",
"channel": "dev",
"version": "1.21.0-1.0.pre",
"release_date": "2020-07-17T03:19:22.261393Z",
"archive": "dev/windows/flutter_windows_1.21.0-1.0.pre-dev.zip",
"sha256": "004d5aa5f0366b1eb8bc9c2767816ce6bcaa9a173a24235d8e37a0d2ed7c2b3a"
},
{
"hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85",
"channel": "dev",
"version": "1.20.0-7.1.pre",
"release_date": "2020-07-11T04:17:00.090738Z",
"archive": "dev/windows/flutter_windows_1.20.0-7.1.pre-dev.zip",
"sha256": "edd76342cf2f34b495fcbeb781101ed8ca8093972a41f55e726d0f2b55f02268"
},
{
"hash": "cc1af3afb62187cc37185afddc2d43bfef469db7",
"channel": "dev",
"version": "1.20.0-7.0.pre",
"release_date": "2020-07-09T19:12:03.422566Z",
"archive": "dev/windows/flutter_windows_1.20.0-7.0.pre-dev.zip",
"sha256": "33709a0b9d6944d20183d07f2ab4f8b387691ba5c4bcc2e51dd4af178fa18bef"
},
{
"hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3",
"channel": "dev",
"version": "1.20.0-3.0.pre",
"release_date": "2020-07-05T03:58:51.296714Z",
"archive": "dev/windows/flutter_windows_1.20.0-3.0.pre-dev.zip",
"sha256": "71e98dd58eecb59943dba836715487e889679459d02df8268ac1bcef489d7847"
},
{
"hash": "8fe7655ed20ffd1395f68e30539a847a01a30351",
"channel": "beta",
"version": "1.19.0-4.3.pre",
"release_date": "2020-07-01T23:41:14.600259Z",
"archive": "beta/windows/flutter_windows_1.19.0-4.3.pre-beta.zip",
"sha256": "7a6ffa058e83e736aad836232e9d089bdb0e9d0fa7ca2ff9e9b9311529060103"
},
{
"hash": "9b9b543d9265484132c798adaab6caca52055b08",
"channel": "beta",
"version": "1.19.0-4.2.pre",
"release_date": "2020-07-01T23:21:07.783044Z",
"archive": "beta/windows/flutter_windows_1.19.0-4.2.pre-beta.zip",
"sha256": "91adc51c627ba75c993eb33d43c54c1897546e03cc2dd0d2b9ddb8ea93802cbf"
},
{
"hash": "8af6b2f038c1172e61d418869363a28dffec3cb4",
"channel": "stable",
"version": "1.17.5",
"release_date": "2020-07-01T23:20:20.230478Z",
"archive": "stable/windows/flutter_windows_1.17.5-stable.zip",
"sha256": "690946999d8a88ddf41247e516d74debac11743b94c192afdc8587c2ec48a817"
},
{
"hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93",
"channel": "dev",
"version": "1.20.0-2.0.pre",
"release_date": "2020-06-26T21:20:45.564812Z",
"archive": "dev/windows/flutter_windows_1.20.0-2.0.pre-dev.zip",
"sha256": "c0189f6228510bfa1a46341ade13ae3a80d3e7a5b85ef63815abf0f653cbbac8"
},
{
"hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314",
"channel": "stable",
"version": "1.17.4",
"release_date": "2020-06-18T16:01:02.711833Z",
"archive": "stable/windows/flutter_windows_1.17.4-stable.zip",
"sha256": "eef98db85ea6170868d4c1b1fc0262dacf9207635b8191c0c7c690b58a661961"
},
{
"hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1",
"channel": "dev",
"version": "1.20.0-0.0.pre",
"release_date": "2020-06-11T15:29:25.410945Z",
"archive": "dev/windows/flutter_windows_1.20.0-0.0.pre-dev.zip",
"sha256": "02a62f577d8bbb87b40360b49a13a3530af1e769c02bb87baf5bba78ec0b3e29"
},
{
"hash": "f994b769743368b36b9c03fb359f62230b60ab92",
"channel": "beta",
"version": "1.19.0-4.1.pre",
"release_date": "2020-06-10T22:01:51.112115Z",
"archive": "beta/windows/flutter_windows_1.19.0-4.1.pre-beta.zip",
"sha256": "a7e5cd0a2725617633f6ff5eec483b756ecf560a9ed7bfdd9164a45817de2182"
},
{
"hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d",
"channel": "dev",
"version": "1.19.0-5.0.pre",
"release_date": "2020-06-09T23:55:05.402029Z",
"archive": "dev/windows/flutter_windows_1.19.0-5.0.pre-dev.zip",
"sha256": "e7d9a3557a765fdd4a816fef88e37f810f8930fd0729200abb5ddc137294cc22"
},
{
"hash": "b041144f833e05cf463b8887fa12efdec9493488",
"channel": "stable",
"version": "1.17.3",
"release_date": "2020-06-05T17:29:57.795041Z",
"archive": "stable/windows/flutter_windows_1.17.3-stable.zip",
"sha256": "44eb682c73824c0e9e3b68779079a11286108e0993aeb17d722c7a3dab6f7f98"
},
{
"hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653",
"channel": "dev",
"version": "1.19.0-4.0.pre",
"release_date": "2020-06-05T16:31:50.289225Z",
"archive": "dev/windows/flutter_windows_1.19.0-4.0.pre-dev.zip",
"sha256": "4fc8c8597cb77dcb1adab7af44e8c564d7857a4d57ac809e3d0cd148403f7090"
},
{
"hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05",
"channel": "dev",
"version": "1.19.0-3.0.pre",
"release_date": "2020-06-02T20:20:44.584873Z",
"archive": "dev/windows/flutter_windows_1.19.0-3.0.pre-dev.zip",
"sha256": "9e696fc4d572c7f42dc1661f247160fea80f8ca63611c9584d359c502cad107d"
},
{
"hash": "1d395c5e187370f2838bb043d3b438029b484bfc",
"channel": "dev",
"version": "1.19.0-2.0.pre",
"release_date": "2020-06-01T17:32:41.018798Z",
"archive": "dev/windows/flutter_windows_1.19.0-2.0.pre-dev.zip",
"sha256": "929db832e3504ebe92b9519938fc5ce2e28cd9a89bd2dd29709aa69d6a35c2be"
},
{
"hash": "5f21edf8b66e31a39133177319414395cc5b5f48",
"channel": "stable",
"version": "1.17.2",
"release_date": "2020-05-28T21:41:45.591652Z",
"archive": "stable/windows/flutter_windows_1.17.2-stable.zip",
"sha256": "48674906cbdf78e47b3a90e4e01d3ff7ccaff16be681e22d55a7e8db919c34d5"
},
{
"hash": "2738a1148ba6c9a6114df62358109407c3ef2553",
"channel": "beta",
"version": "1.18.0-11.1.pre",
"release_date": "2020-05-14T17:51:10.706190Z",
"archive": "beta/windows/flutter_windows_1.18.0-11.1.pre-beta.zip",
"sha256": "37724aa854e47c0603787fcea5f0b56815ca28f51192557f33a9567a413ef5f1"
},
{
"hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe",
"channel": "stable",
"version": "1.17.1",
"release_date": "2020-05-13T18:08:40.384099Z",
"archive": "stable/windows/flutter_windows_1.17.1-stable.zip",
"sha256": "12b1e243b5a1620be7e6beaedff0fc47afeae3e8d8661fb096e5d2358b0e1566"
},
{
"hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8",
"channel": "dev",
"version": "1.19.0-1.0.pre",
"release_date": "2020-05-12T22:38:16.364915Z",
"archive": "dev/windows/flutter_windows_1.19.0-1.0.pre-dev.zip",
"sha256": "0115d43f1b6f1cba386dec7fca1721cab5cdf4e4c419152986e3537318ab6e72"
},
{
"hash": "a849daf2836d653ef80e01f428531b3f787671cb",
"channel": "dev",
"version": "1.19.0-0.0.pre",
"release_date": "2020-05-08T19:35:59.773728Z",
"archive": "dev/windows/flutter_windows_1.19.0-0.0.pre-dev.zip",
"sha256": "a4d6913f42e972b0263b996f91337a973928f03c9bdc13f2fbaef1f644e8713a"
},
{
"hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81",
"channel": "dev",
"version": "1.18.0-13.0.pre",
"release_date": "2020-05-07T17:11:57.281903Z",
"archive": "dev/windows/flutter_windows_1.18.0-13.0.pre-dev.zip",
"sha256": "c5dc98f69d162d647bd82a5cb9b313b039d27c95689934dc65ef2ec8f94899ab"
},
{
"hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320",
"channel": "dev",
"version": "1.18.0-12.0.pre",
"release_date": "2020-05-06T22:10:51.076262Z",
"archive": "dev/windows/flutter_windows_1.18.0-12.0.pre-dev.zip",
"sha256": "34d0b8cc3861ac7e84a702f8de4872664a4579dbb00001214bda1480580f9b03"
},
{
"hash": "8568eda15b2527afd48622257cee3811e0d9da04",
"channel": "dev",
"version": "1.18.0-11.0.pre",
"release_date": "2020-05-06T18:40:51.838982Z",
"archive": "dev/windows/flutter_windows_1.18.0-11.0.pre-dev.zip",
"sha256": "34afaa4ebf89bbd57c42ab11a8900030fcbb4c2d24214ad17716bb5ac8bb001a"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "stable",
"version": "1.17.0",
"release_date": "2020-05-06T14:30:41.659932Z",
"archive": "stable/windows/flutter_windows_1.17.0-stable.zip",
"sha256": "b6e8ca43b046d1a10cfb995b8c63828c8fbe35bb55e9c58349982810d57b2681"
},
{
"hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05",
"channel": "dev",
"version": "1.18.0-10.0.pre",
"release_date": "2020-05-06T01:41:30.981078Z",
"archive": "dev/windows/flutter_windows_1.18.0-10.0.pre-dev.zip",
"sha256": "06b941331ff98b48ef338932cabe417660b81eb7e1e704ef01475fac040a2d2e"
},
{
"hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975",
"channel": "dev",
"version": "1.18.0-9.0.pre",
"release_date": "2020-05-05T23:08:24.569649Z",
"archive": "dev/windows/flutter_windows_1.18.0-9.0.pre-dev.zip",
"sha256": "ebd24de7f2df084ea44e971018149041ccafdb503ff7b72a49c1de53748c1fb8"
},
{
"hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
"channel": "beta",
"version": "1.17.0-3.4.pre",
"release_date": "2020-05-02T20:33:14.297290Z",
"archive": "beta/windows/flutter_windows_1.17.0-3.4.pre-beta.zip",
"sha256": "9120c5044fbbec16b639b2a5256f37fd0774e976798ff5aa44b9ecbc4c173152"
},
{
"hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534",
"channel": "beta",
"version": "1.17.0-3.3.pre",
"release_date": "2020-04-28T23:59:31.178024Z",
"archive": "beta/windows/flutter_windows_1.17.0-3.3.pre-beta.zip",
"sha256": "561ace7f7cb60e496da6e918f36aa88c494f40faeffa5567ef728b3b9e4f8654"
},
{
"hash": "e0c63cd35e15e407a80dc44281cc392535fcce25",
"channel": "dev",
"version": "1.18.0-8.0.pre",
"release_date": "2020-04-24T16:37:39.453303Z",
"archive": "dev/windows/flutter_windows_1.18.0-8.0.pre-dev.zip",
"sha256": "ff85e425d739e21d2f270f30f2600a40989d71d962bee56da222ac1eb8e0a0da"
},
{
"hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9",
"channel": "dev",
"version": "1.18.0-7.0.pre",
"release_date": "2020-04-24T12:57:12.193500Z",
"archive": "dev/windows/flutter_windows_1.18.0-7.0.pre-dev.zip",
"sha256": "64b4d6ca0ac3cf86c60af935274224ce3f269e710b8e4f02b06f7d0f05227028"
},
{
"hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e",
"channel": "beta",
"version": "1.17.0-3.2.pre",
"release_date": "2020-04-22T17:11:39.904570Z",
"archive": "beta/windows/flutter_windows_1.17.0-3.2.pre-beta.zip",
"sha256": "a249672dfec50eeb20bbe9e32e2cc17a5de80f7c52b1f8592e2125ab3233907d"
},
{
"hash": "84c84fb24914e098667649be04614f6ea19d689c",
"channel": "dev",
"version": "1.18.0-6.0.pre",
"release_date": "2020-04-21T22:10:28.586548Z",
"archive": "dev/windows/flutter_windows_1.18.0-6.0.pre-dev.zip",
"sha256": "aa287dc96d946fb2624421f4920e8633b22f04e4cd94978a698b5db0f4334f14"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-17T21:33:52.442843Z",
"archive": "stable/windows/flutter_windows_v1.12.13+hotfix.9-stable.zip",
"sha256": "6d1a7dd628514e3b089c15ead3db715781b1f8129403b7082d214d8c30adf3c2"
},
{
"hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f",
"channel": "dev",
@@ -94,14 +542,6 @@
"archive": "dev/windows/flutter_windows_1.17.0-dev.2.0-dev.zip",
"sha256": "effe8c03100acafb7e2ea7aa431adb85f9216a844b484aa44aed5e486c299c4c"
},
{
"hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3",
"channel": "stable",
"version": "v1.12.13+hotfix.9",
"release_date": "2020-04-01T22:15:29.166915Z",
"archive": "stable/windows/flutter_windows_v1.12.13+hotfix.9-stable.zip",
"sha256": "1ba843d06c71e09aef35f6766d43503388922e97b177ed5998b18ae971ad24ed"
},
{
"hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0",
"channel": "dev",

View File

@@ -11,17 +11,7 @@ process.env['RUNNER_TOOL_CACHE'] = toolDir;
process.env['RUNNER_TEMP'] = tempDir;
import * as installer from '../src/installer';
function osName(): string {
switch (process.platform) {
case 'win32':
return 'windows';
case 'darwin':
return 'macos';
default:
return process.platform;
}
}
import * as release from '../src/release';
describe('installer tests', () => {
beforeAll(async () => {
@@ -29,7 +19,17 @@ describe('installer tests', () => {
await io.rmRF(tempDir);
}, 100000);
beforeEach(() => {
const platform = release.getPlatform();
nock('https://storage.googleapis.com', {allowUnmocked: true})
.get(`/flutter_infra/releases/releases_${platform}.json`)
.replyWithFile(200, path.join(dataDir, `releases_${platform}.json`));
});
afterEach(async () => {
nock.cleanAll();
nock.enableNetConnect();
await io.rmRF(toolDir);
await io.rmRF(tempDir);
}, 100000);
@@ -42,78 +42,6 @@ describe('installer tests', () => {
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
it('Downloads flutter from dev channel', async () => {
await installer.getFlutter('1.17.0-dev.5.0', 'dev');
const sdkDir = path.join(toolDir, 'flutter', '1.17.0-dev.5.0-dev', 'x64');
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
describe('get the latest release of a flutter version', () => {
beforeEach(() => {
const platform = osName();
nock('https://storage.googleapis.com', {allowUnmocked: true})
.get(`/flutter_infra/releases/releases_${platform}.json`)
.replyWithFile(200, path.join(dataDir, `releases_${platform}.json`));
});
afterEach(() => {
nock.cleanAll();
nock.enableNetConnect();
});
it('Downloads latest flutter release from stable channel', async () => {
await installer.getFlutter('', 'stable');
const sdkDir = path.join(
toolDir,
'flutter',
'1.12.13-hotfix.9-stable',
'x64'
);
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
it('Downloads latest flutter release from beta channel (using new release format)', async () => {
await installer.getFlutter('', 'beta');
const sdkDir = path.join(
toolDir,
'flutter',
'1.17.0-dev.3.1-beta',
'x64'
);
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
it('Downloads latest flutter release of 1.7 when using version 1.7 from dev channel', async () => {
await installer.getFlutter('1.7', 'dev');
const sdkDir = path.join(toolDir, 'flutter', '1.7.11-dev', 'x64');
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
it('Downloads latest flutter release of 1.7 when using version 1.7.x from dev channel', async () => {
await installer.getFlutter('1.7.x', 'dev');
const sdkDir = path.join(toolDir, 'flutter', '1.7.11-dev', 'x64');
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
it('Downloads latest flutter release of 1.18 when using version 1.18.x from dev channel (using new release format)', async () => {
await installer.getFlutter('1.18.x', 'dev');
const sdkDir = path.join(toolDir, 'flutter', '1.18.0-dev.5.0-dev', 'x64');
expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true);
expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true);
}, 300000);
});
it('Throws if no location contains correct flutter version', async () => {
let thrown = false;
try {

117
__tests__/release.test.ts Normal file
View File

@@ -0,0 +1,117 @@
import fs = require('fs');
import path = require('path');
import nock = require('nock');
import * as release from '../src/release';
const platform = release.getPlatform();
describe('release tests', () => {
it('getPlatform', () => {
const platformMap: {[index: string]: string} = {
linux: 'linux',
darwin: 'macos',
win32: 'windows'
};
expect(platform).toEqual(platformMap[process.platform]);
});
describe('determineVersion', () => {
beforeEach(() => {
const dataDir = path.join(__dirname, 'data');
nock('https://storage.googleapis.com', {allowUnmocked: true})
.get(`/flutter_infra/releases/releases_${platform}.json`)
.replyWithFile(200, path.join(dataDir, `releases_${platform}.json`));
});
afterEach(() => {
nock.cleanAll();
nock.enableNetConnect();
});
it('channel: "stable", version: ""', async () => {
const result = await release.determineVersion('', 'stable', platform);
expect(result.version).toEqual('1.22.0');
expect(result.rawVersion).toEqual('1.22.0');
expect(result.downloadUrl).toContain('1.22.0');
});
it('channel: "beta", version: ""', async () => {
const result = await release.determineVersion('', 'beta', platform);
expect(result.version).toEqual('1.22.0-12.3.pre');
expect(result.rawVersion).toEqual('1.22.0-12.3.pre');
expect(result.downloadUrl).toContain('1.22.0-12.3.pre');
});
it('channel: "dev", version: ""', async () => {
const result = await release.determineVersion('', 'dev', platform);
expect(result.version).toEqual('1.23.0-7.0.pre');
expect(result.rawVersion).toEqual('1.23.0-7.0.pre');
expect(result.downloadUrl).toContain('1.23.0-7.0.pre');
});
it('channel: "dev", version: "1.17.x"', async () => {
const result = await release.determineVersion('1.17.x', 'dev', platform);
expect(result.version).toEqual('1.17.0-dev.5.0');
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
});
it('channel: "dev", version: "1.17"', async () => {
const result = await release.determineVersion('1.17', 'dev', platform);
expect(result.version).toEqual('1.17.0-dev.5.0');
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
});
it('channel: "dev", version: "1.7.x" (old format)', async () => {
const result = await release.determineVersion('1.7.x', 'dev', platform);
expect(result.version).toEqual('1.7.11');
expect(result.rawVersion).toEqual('v1.7.11');
expect(result.downloadUrl).toContain('v1.7.11');
});
it('channel: "dev", version: "1.7" (old format)', async () => {
const result = await release.determineVersion('1.7', 'dev', platform);
expect(result.version).toEqual('1.7.11');
expect(result.rawVersion).toEqual('v1.7.11');
expect(result.downloadUrl).toContain('v1.7.11');
});
it('channel: "dev", version: "0.12.x" (unknown)', async () => {
try {
await release.determineVersion('0.12.x', 'dev', platform);
} catch (e) {
expect(e.message).toEqual('unable to find release for 0.12.x');
}
});
it('channel: "dev", version: "0.12" (unknown)', async () => {
try {
await release.determineVersion('0.12', 'dev', platform);
} catch (e) {
expect(e.message).toEqual('unable to find release for 0.12');
}
});
it('channel: "dev", version: "1.17.0-dev.5.0"', async () => {
const result = await release.determineVersion(
'1.17.0-dev.5.0',
'dev',
platform
);
expect(result.version).toEqual('1.17.0-dev.5.0');
expect(result.rawVersion).toEqual('1.17.0-dev.5.0');
expect(result.downloadUrl).toContain('1.17.0-dev.5.0');
});
});
});

7989
dist/index.js vendored

File diff suppressed because it is too large Load Diff

3989
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "flutter-action",
"version": "1.3.0",
"version": "1.3.2",
"private": true,
"description": "Flutter environment for use in actions",
"main": "lib/index.js",
@@ -25,27 +25,27 @@
"author": "Alif Rachmawadi <arch@subosito.com>",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.3",
"@actions/exec": "^1.0.3",
"@actions/http-client": "^1.0.7",
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4",
"@actions/http-client": "^1.0.8",
"@actions/io": "^1.0.2",
"@actions/tool-cache": "^1.3.3",
"semver": "^7.3.0",
"uuid": "^7.0.3"
"@actions/tool-cache": "^1.6.0",
"semver": "^7.3.2",
"uuid": "^8.3.1"
},
"devDependencies": {
"@types/jest": "^25.2.1",
"@types/node": "^12.12.35",
"@types/semver": "^7.1.0",
"@types/uuid": "^7.0.2",
"@zeit/ncc": "^0.22.1",
"jest": "^25.3.0",
"jest-circus": "^25.3.0",
"nock": "^12.0.3",
"@types/jest": "^26.0.14",
"@types/node": "^14.11.5",
"@types/semver": "^7.3.4",
"@types/uuid": "^8.3.0",
"@vercel/ncc": "^0.24.1",
"jest": "^26.5.2",
"jest-circus": "^26.5.2",
"nock": "^13.0.4",
"npm-run-all": "^4.1.5",
"prettier": "^1.19.1",
"ts-jest": "^25.3.1",
"typescript": "^3.8.3"
"prettier": "1.19.1",
"ts-jest": "^26.4.1",
"typescript": "^4.0.3"
},
"resolutions": {
"minimist": "^1.2.2"

View File

@@ -1,51 +1,22 @@
import * as core from '@actions/core';
import * as io from '@actions/io';
import * as tc from '@actions/tool-cache';
import {CONNREFUSED} from 'dns';
import * as fs from 'fs';
import * as path from 'path';
import * as httpm from '@actions/http-client';
import * as semver from 'semver';
const IS_WINDOWS = process.platform === 'win32';
const IS_DARWIN = process.platform === 'darwin';
const IS_LINUX = process.platform === 'linux';
const storageUrl = 'https://storage.googleapis.com/flutter_infra/releases';
let tempDirectory = process.env['RUNNER_TEMP'] || '';
if (!tempDirectory) {
let baseLocation;
if (IS_WINDOWS) {
baseLocation = process.env['USERPROFILE'] || 'C:\\';
} else {
if (process.platform === 'darwin') {
baseLocation = '/Users';
} else {
baseLocation = '/home';
}
}
tempDirectory = path.join(baseLocation, 'actions', 'temp');
}
import {format} from 'path';
import * as release from './release';
export async function getFlutter(
version: string,
channel: string
): Promise<void> {
const versionPart = version.split('.').filter(Boolean);
const platform = release.getPlatform();
if (
versionPart.length > 0 &&
(versionPart[1] == null || versionPart[2] == null)
) {
version = version.concat('.x');
}
const {version: selected, rawVersion, downloadUrl} = await determineVersion(
const {version: selected, downloadUrl} = await release.determineVersion(
version,
channel
channel,
platform
);
let cleanver = `${selected.replace('+', '-')}-${channel}`;
@@ -54,13 +25,11 @@ export async function getFlutter(
if (toolPath) {
core.debug(`Tool found in cache ${toolPath}`);
} else {
core.debug('Downloading Flutter from Google storage');
core.debug(`Downloading Flutter from Google storage ${downloadUrl}`);
const sdkFile = await tc.downloadTool(downloadUrl);
let tempDir: string = generateTempDir();
const sdkDir = await extractDownload(sdkFile, tempDir);
core.debug(`Flutter sdk extracted to ${sdkDir}`);
const sdkCache = await tmpDir(platform);
const sdkDir = await extract(sdkFile, sdkCache, path.basename(downloadUrl));
toolPath = await tc.cacheDir(sdkDir, 'flutter', cleanver);
}
@@ -70,197 +39,65 @@ export async function getFlutter(
core.addPath(path.join(toolPath, 'bin', 'cache', 'dart-sdk', 'bin'));
}
function osName(): string {
if (IS_DARWIN) return 'macos';
if (IS_WINDOWS) return 'windows';
function tmpBaseDir(platform: string): string {
let tempDirectory = process.env['RUNNER_TEMP'] || '';
return process.platform;
if (tempDirectory) {
return tempDirectory;
}
let baseLocation;
switch (platform) {
case 'windows':
baseLocation = process.env['USERPROFILE'] || 'C:\\';
break;
case 'macos':
baseLocation = '/Users';
break;
default:
baseLocation = '/home';
break;
}
return path.join(baseLocation, 'actions', 'temp');
}
function extName(): string {
if (IS_LINUX) return 'tar.xz';
return 'zip';
}
function generateTempDir(): string {
return path.join(
tempDirectory,
async function tmpDir(platform: string): Promise<string> {
const baseDir = tmpBaseDir(platform);
const tempDir = path.join(
baseDir,
'temp_' + Math.floor(Math.random() * 2000000000)
);
await io.mkdirP(tempDir);
return tempDir;
}
async function extractDownload(
async function extract(
sdkFile: string,
destDir: string
sdkCache: string,
originalFilename: string
): Promise<string> {
await io.mkdirP(destDir);
const fileStats = fs.statSync(path.normalize(sdkFile));
const sdkPath = path.normalize(sdkFile);
const stats = fs.statSync(sdkPath);
if (fileStats.isFile()) {
const stats = fs.statSync(sdkFile);
if (stats.isFile()) {
await extractFile(sdkFile, destDir);
if (!stats) {
throw new Error(`Failed to extract ${sdkFile} - it doesn't exist`);
} else if (stats.isDirectory()) {
throw new Error(`Failed to extract ${sdkFile} - it is a directory`);
}
const sdkDir = path.join(destDir, fs.readdirSync(destDir)[0]);
if (originalFilename.endsWith('tar.xz')) {
await tc.extractTar(sdkFile, sdkCache, 'x');
} else {
await tc.extractZip(sdkFile, sdkCache);
}
return sdkDir;
return path.join(sdkCache, fs.readdirSync(sdkCache)[0]);
} else {
throw new Error(`Flutter sdk argument ${sdkFile} is not a file`);
}
}
async function extractFile(file: string, destDir: string): Promise<void> {
const stats = fs.statSync(file);
if (!stats) {
throw new Error(`Failed to extract ${file} - it doesn't exist`);
} else if (stats.isDirectory()) {
throw new Error(`Failed to extract ${file} - it is a directory`);
}
if ('tar.xz' === extName()) {
await tc.extractTar(file, destDir, 'x');
} else {
await tc.extractZip(file, destDir);
}
}
async function determineVersion(
version: string,
channel: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
if (version.endsWith('.x') || version === '') {
return await getLatestVersion(version, channel);
}
return await getSelectedVersion(version, channel);
}
interface IFlutterChannel {
[key: string]: string;
beta: string;
dev: string;
stable: string;
}
interface IFlutterRelease {
hash: string;
channel: string;
version: string;
archive: string;
}
interface IFlutterStorage {
current_release: IFlutterChannel;
releases: IFlutterRelease[];
}
async function getReleases(): Promise<IFlutterStorage> {
const releasesUrl: string = `${storageUrl}/releases_${osName()}.json`;
const http: httpm.HttpClient = new httpm.HttpClient('flutter-action');
const storage: IFlutterStorage | null = (
await http.getJson<IFlutterStorage | null>(releasesUrl)
).result;
if (!storage) {
throw new Error('unable to get flutter releases');
}
return storage;
}
async function getSelectedVersion(
version: string,
channel: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
const storage = await getReleases();
const release = storage.releases.find(release => {
if (release.channel != channel) return false;
return compare(version, release.version);
});
if (!release) {
throw new Error(`invalid flutter version ${version}, channel ${channel}`);
}
return {
version,
rawVersion: release.version,
downloadUrl: `${storageUrl}/${release.archive}`
};
}
async function getLatestVersion(
version: string,
channel: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
const storage = await getReleases();
if (version.endsWith('.x')) {
const sver = version.slice(0, version.length - 2);
const releases = storage.releases.filter(release => {
if (release.channel != channel) return false;
return prefixCompare(sver, release.version);
});
const versions = releases
.map(release => release.version)
.map(version =>
version.startsWith('v') ? version.slice(1, version.length) : version
);
const sortedVersions = versions.sort(semver.rcompare);
let cver = sortedVersions[0];
let release = releases.find(release => compare(cver, release.version));
if (!release) {
throw new Error(`unable to find release for ${cver}`);
}
core.debug(
`latest version of ${version} from channel ${channel} is ${release.version}`
);
return {
version: cver,
rawVersion: release.version,
downloadUrl: `${storageUrl}/${release.archive}`
};
}
const channelVersion = storage.releases.find(
release => release.hash === storage.current_release[channel]
);
if (!channelVersion) {
throw new Error(`unable to get latest version from channel ${channel}`);
}
let rver = channelVersion.version;
let cver = rver.startsWith('v') ? rver.slice(1, rver.length) : rver;
core.debug(`latest version from channel ${channel} is ${rver}`);
return {
version: cver,
rawVersion: rver,
downloadUrl: `${storageUrl}/${channelVersion.archive}`
};
}
function compare(version: string, releaseVersion: string): boolean {
if (releaseVersion.startsWith('v')) {
return releaseVersion === `v${version}`;
}
return releaseVersion === version;
}
function prefixCompare(version: string, releaseVersion: string): boolean {
if (releaseVersion.startsWith('v')) {
return releaseVersion.startsWith(`v${version}`);
}
return releaseVersion.startsWith(version);
}

175
src/release.ts Normal file
View File

@@ -0,0 +1,175 @@
import * as core from '@actions/core';
import * as httpm from '@actions/http-client';
import * as semver from 'semver';
export const storageUrl =
'https://storage.googleapis.com/flutter_infra/releases';
interface IFlutterChannel {
[key: string]: string;
beta: string;
dev: string;
stable: string;
}
interface IFlutterRelease {
hash: string;
channel: string;
version: string;
archive: string;
}
interface IFlutterStorage {
current_release: IFlutterChannel;
releases: IFlutterRelease[];
}
export function getPlatform(): string {
const platform = process.platform;
if (platform == 'win32') {
return 'windows';
}
if (platform == 'darwin') {
return 'macos';
}
return platform;
}
export async function determineVersion(
version: string,
channel: string,
platform: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
const storage = await getReleases(platform);
if (version === '') {
return getLatestVersion(storage, channel);
}
if (version.endsWith('.x')) {
return getWildcardVersion(storage, channel, version);
}
return getVersion(storage, channel, version);
}
async function getReleases(platform: string): Promise<IFlutterStorage> {
const releasesUrl: string = `${storageUrl}/releases_${platform}.json`;
const http: httpm.HttpClient = new httpm.HttpClient('flutter-action');
const storage: IFlutterStorage | null = (
await http.getJson<IFlutterStorage | null>(releasesUrl)
).result;
if (!storage) {
throw new Error('unable to get flutter releases');
}
return storage;
}
async function getLatestVersion(
storage: IFlutterStorage,
channel: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
const channelVersion = storage.releases.find(release => {
return (
release.hash === storage.current_release[channel] &&
release.channel == channel
);
});
if (!channelVersion) {
throw new Error(`unable to get latest version from channel ${channel}`);
}
let rver = channelVersion.version;
let cver = rver.startsWith('v') ? rver.slice(1, rver.length) : rver;
core.debug(`latest version from channel ${channel} is ${rver}`);
return {
version: cver,
rawVersion: rver,
downloadUrl: `${storageUrl}/${channelVersion.archive}`
};
}
async function getWildcardVersion(
storage: IFlutterStorage,
channel: string,
version: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
let sver = version.endsWith('.x')
? version.slice(0, version.length - 2)
: version;
const releases = storage.releases.filter(release => {
if (release.channel != channel) return false;
return prefixCompare(sver, release.version);
});
const versions = releases
.map(release => release.version)
.map(version =>
version.startsWith('v') ? version.slice(1, version.length) : version
);
const sortedVersions = versions.sort(semver.rcompare);
let cver = sortedVersions[0];
let release = releases.find(release => compare(cver, release.version));
if (!release) {
throw new Error(`unable to find release for ${version}`);
}
core.debug(
`latest version of ${version} from channel ${channel} is ${release.version}`
);
return {
version: cver,
rawVersion: release.version,
downloadUrl: `${storageUrl}/${release.archive}`
};
}
async function getVersion(
storage: IFlutterStorage,
channel: string,
version: string
): Promise<{version: string; rawVersion: string; downloadUrl: string}> {
const release = storage.releases.find(release => {
if (release.channel != channel) return false;
return compare(version, release.version);
});
if (!release) {
return getWildcardVersion(storage, channel, version);
}
return {
version,
rawVersion: release.version,
downloadUrl: `${storageUrl}/${release.archive}`
};
}
function compare(version: string, releaseVersion: string): boolean {
if (releaseVersion.startsWith('v')) {
return releaseVersion === `v${version}`;
}
return releaseVersion === version;
}
function prefixCompare(version: string, releaseVersion: string): boolean {
if (releaseVersion.startsWith('v')) {
return releaseVersion.startsWith(`v${version}`);
}
return releaseVersion.startsWith(version);
}