Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26bf50084a | ||
|
|
45483e4c19 | ||
|
|
6f4d1ee832 | ||
|
|
58a4d54c5d | ||
|
|
d0e7441034 | ||
|
|
c7c0640db8 | ||
|
|
1aaec8dd0f | ||
|
|
ddb7b913ca | ||
|
|
0b6cdde020 | ||
|
|
8078702ac6 | ||
|
|
282b38c3d9 | ||
|
|
12d5ce54d2 | ||
|
|
d00139d608 | ||
|
|
5d4e01ab3b | ||
|
|
a81c830097 |
53
README.md
53
README.md
@@ -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
|
||||
|
||||
@@ -1,11 +1,347 @@
|
||||
{
|
||||
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
|
||||
"current_release": {
|
||||
"beta": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
|
||||
"dev": "a849daf2836d653ef80e01f428531b3f787671cb",
|
||||
"stable": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f"
|
||||
"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",
|
||||
|
||||
@@ -1,11 +1,347 @@
|
||||
{
|
||||
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
|
||||
"current_release": {
|
||||
"beta": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
|
||||
"dev": "a849daf2836d653ef80e01f428531b3f787671cb",
|
||||
"stable": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f"
|
||||
"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",
|
||||
|
||||
@@ -1,11 +1,347 @@
|
||||
{
|
||||
"base_url": "https://storage.googleapis.com/flutter_infra/releases",
|
||||
"current_release": {
|
||||
"beta": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f",
|
||||
"dev": "a849daf2836d653ef80e01f428531b3f787671cb",
|
||||
"stable": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f"
|
||||
"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",
|
||||
|
||||
@@ -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,73 +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.17.0-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-3.4.pre-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.17 when using version 1.17.x from dev channel (using new release format)', async () => {
|
||||
await installer.getFlutter('1.17.x', '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);
|
||||
});
|
||||
|
||||
it('Throws if no location contains correct flutter version', async () => {
|
||||
let thrown = false;
|
||||
try {
|
||||
|
||||
117
__tests__/release.test.ts
Normal file
117
__tests__/release.test.ts
Normal 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');
|
||||
});
|
||||
});
|
||||
});
|
||||
8099
dist/index.js
vendored
8099
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
3100
package-lock.json
generated
3100
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
28
package.json
28
package.json
@@ -25,27 +25,27 @@
|
||||
"author": "Alif Rachmawadi <arch@subosito.com>",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.4",
|
||||
"@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.4",
|
||||
"@actions/tool-cache": "^1.6.0",
|
||||
"semver": "^7.3.2",
|
||||
"uuid": "^7.0.3"
|
||||
"uuid": "^8.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^25.2.1",
|
||||
"@types/node": "^12.12.38",
|
||||
"@types/semver": "^7.1.0",
|
||||
"@types/uuid": "^7.0.3",
|
||||
"@zeit/ncc": "^0.22.1",
|
||||
"jest": "^25.5.4",
|
||||
"jest-circus": "^25.5.4",
|
||||
"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.5.0",
|
||||
"typescript": "^3.8.3"
|
||||
"prettier": "1.19.1",
|
||||
"ts-jest": "^26.4.1",
|
||||
"typescript": "^4.0.3"
|
||||
},
|
||||
"resolutions": {
|
||||
"minimist": "^1.2.2"
|
||||
|
||||
276
src/installer.ts
276
src/installer.ts
@@ -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,200 +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 => {
|
||||
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}`
|
||||
};
|
||||
}
|
||||
|
||||
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
175
src/release.ts
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user