Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26bf50084a | ||
|
|
45483e4c19 | ||
|
|
6f4d1ee832 | ||
|
|
58a4d54c5d | ||
|
|
d0e7441034 | ||
|
|
c7c0640db8 | ||
|
|
1aaec8dd0f | ||
|
|
ddb7b913ca | ||
|
|
0b6cdde020 | ||
|
|
8078702ac6 | ||
|
|
282b38c3d9 | ||
|
|
12d5ce54d2 | ||
|
|
d00139d608 | ||
|
|
5d4e01ab3b | ||
|
|
40bc2f6940 | ||
|
|
f0d790518f | ||
|
|
c4a41752bd | ||
|
|
929035d687 | ||
|
|
4bb529986f | ||
|
|
ecb8eabe6f | ||
|
|
cf426f9aa2 | ||
|
|
794e42ad48 | ||
|
|
2dd537cc3f | ||
|
|
3ba093556e | ||
|
|
9cde868c41 | ||
|
|
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,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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
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');
|
||||
});
|
||||
});
|
||||
});
|
||||
7989
dist/index.js
vendored
7989
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
3989
package-lock.json
generated
3989
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
36
package.json
36
package.json
@@ -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"
|
||||
|
||||
273
src/installer.ts
273
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,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
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