diff --git a/__tests__/data/adoptium.json b/__tests__/data/adoptium.json new file mode 100644 index 000000000..631b1380c --- /dev/null +++ b/__tests__/data/adoptium.json @@ -0,0 +1,868 @@ +[ + { + "binaries": [ + { + "architecture": "x64", + "download_count": 74181, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "09b7e6ab5d5eb4b73813f4caa793a0b616d33794a17988fa6a6b7c972e8f3dd3", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_mac_hotspot_14.0.2_12.tar.gz.sha256.txt", + "download_count": 23872, + "link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_mac_hotspot_14.0.2_12.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_mac_hotspot_14.0.2_12.tar.gz.json", + "name": "OpenJDK14U-jdk_x64_mac_hotspot_14.0.2_12.tar.gz", + "size": 195705010 + }, + "project": "jdk", + "scm_ref": "jdk-14.0.2+12_adopt", + "updated_at": "2020-07-16T08:55:45Z" + } + ], + "download_count": 477080, + "id": "MDc6UmVsZWFzZTI4NjIyMDc4.+ve8KojpqJUpsA==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/tag/jdk-14.0.2%2B12", + "release_name": "jdk-14.0.2+12", + "release_type": "ga", + "timestamp": "2020-07-16T08:54:16Z", + "updated_at": "2020-07-16T08:54:16Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 12, + "major": 14, + "minor": 0, + "openjdk_version": "14.0.2+12", + "security": 2, + "semver": "14.0.2+12" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 58023, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "b11cb192312530bcd84607631203d0c1727e672af12813078e6b525e3cce862d", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.1%2B7/OpenJDK14U-jdk_x64_mac_hotspot_14.0.1_7.tar.gz.sha256.txt", + "download_count": 25276, + "link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.1%2B7/OpenJDK14U-jdk_x64_mac_hotspot_14.0.1_7.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.1%2B7/OpenJDK14U-jdk_x64_mac_hotspot_14.0.1_7.tar.gz.json", + "name": "OpenJDK14U-jdk_x64_mac_hotspot_14.0.1_7.tar.gz", + "size": 195769653 + }, + "project": "jdk", + "scm_ref": "jdk-14.0.1+7_adopt", + "updated_at": "2020-04-20T12:54:23Z" + } + ], + "download_count": 198607, + "id": "MDc6UmVsZWFzZTI1Njc4MzEw.z3NqYG25PFlG+Q==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/tag/jdk-14.0.1%2B7", + "release_name": "jdk-14.0.1+7", + "release_type": "ga", + "timestamp": "2020-04-20T12:52:51Z", + "updated_at": "2020-04-20T12:52:51Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 7, + "major": 14, + "minor": 0, + "openjdk_version": "14.0.1+7", + "security": 1, + "semver": "14.0.1+7.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 30069, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "d358a7ff03905282348c6c80562a4da2e04eb377b60ad2152be4c90f8d580b7f", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_mac_hotspot_15.0.2_7.tar.gz.sha256.txt", + "download_count": 3718, + "link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_mac_hotspot_15.0.2_7.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_mac_hotspot_15.0.2_7.tar.gz.json", + "name": "OpenJDK15U-jdk_x64_mac_hotspot_15.0.2_7.tar.gz", + "size": 195232978 + }, + "project": "jdk", + "scm_ref": "jdk-15.0.2+7_adopt", + "updated_at": "2021-01-22T17:33:20Z" + } + ], + "download_count": 124226, + "id": "MDc6UmVsZWFzZTM2NzgwOTAw.X2+6VqPND3E8CA==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/tag/jdk-15.0.2%2B7", + "release_name": "jdk-15.0.2+7", + "release_type": "ga", + "timestamp": "2021-01-22T17:31:37Z", + "updated_at": "2021-01-22T17:31:37Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 7, + "major": 15, + "minor": 0, + "openjdk_version": "15.0.2+7", + "security": 2, + "semver": "15.0.2+7" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 24542, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "b8c2e2ad31f3d6676ea665d9505b06df15e23741847556612b40e3ee329fc046", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9.1/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz.sha256.txt", + "download_count": 3274, + "link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9.1/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9.1/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz.json", + "name": "OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz", + "size": 195872839 + }, + "project": "jdk", + "scm_ref": "jdk-15.0.1+9_adopt", + "updated_at": "2020-12-01T16:57:47Z" + } + ], + "download_count": 25378, + "id": "MDc6UmVsZWFzZTM0NjQ2MDU4.Yj2XZf+VBGAPtw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/tag/jdk-15.0.1%2B9.1", + "release_name": "jdk-15.0.1+9.1", + "release_type": "ga", + "timestamp": "2020-12-01T16:57:26Z", + "updated_at": "2020-12-01T16:57:26Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 9, + "major": 15, + "minor": 0, + "openjdk_version": "15.0.1+9", + "security": 1, + "semver": "15.0.1+9.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 21675, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "d32f9429c4992cef7be559a15c542011503d6bc38c89379800cd209a9d7ec539", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz.sha256.txt", + "download_count": 11935, + "link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.1%2B9/OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz.json", + "name": "OpenJDK15U-jdk_x64_mac_hotspot_15.0.1_9.tar.gz", + "size": 195773522 + }, + "project": "jdk", + "scm_ref": "jdk-15.0.1+9_adopt", + "updated_at": "2020-10-23T20:48:09Z" + } + ], + "download_count": 308690, + "id": "MDc6UmVsZWFzZTMyOTk4MTUx.3oazo3YGfHhF3w==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/tag/jdk-15.0.1%2B9", + "release_name": "jdk-15.0.1+9", + "release_type": "ga", + "timestamp": "2020-10-23T20:46:22Z", + "updated_at": "2020-10-23T20:46:22Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 9, + "major": 15, + "minor": 0, + "openjdk_version": "15.0.1+9", + "security": 1, + "semver": "15.0.1+9" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 51254, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "bd1fc774232e2dfee93056a01f5765bd92ffb19d68dd548c233a82bb5c162be4", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_mac_hotspot_15_36.tar.gz.sha256.txt", + "download_count": 5325, + "link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_mac_hotspot_15_36.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_mac_hotspot_15_36.tar.gz.json", + "name": "OpenJDK15U-jdk_x64_mac_hotspot_15_36.tar.gz", + "size": 195853361 + }, + "project": "jdk", + "scm_ref": "jdk-15+36_adopt", + "updated_at": "2020-09-17T07:43:54Z" + } + ], + "download_count": 157313, + "id": "MDc6UmVsZWFzZTMxNDUwMjA0.eYpt0EBEjldfEQ==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/tag/jdk-15%2B36", + "release_name": "jdk-15+36", + "release_type": "ga", + "timestamp": "2020-09-17T07:42:21Z", + "updated_at": "2020-09-17T07:42:21Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 36, + "major": 15, + "minor": 0, + "openjdk_version": "15+36", + "security": 0, + "semver": "15.0.0+36" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 27428, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "aabc3aebb0abf1ba64d9bd5796d0c7eb7239983f6e4c0f015b5b88be5616e4bd", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14%2B36/OpenJDK14U-jdk_x64_mac_hotspot_14_36.tar.gz.sha256.txt", + "download_count": 19544, + "link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14%2B36/OpenJDK14U-jdk_x64_mac_hotspot_14_36.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14%2B36/OpenJDK14U-jdk_x64_mac_hotspot_14_36.tar.gz.json", + "name": "OpenJDK14U-jdk_x64_mac_hotspot_14_36.tar.gz", + "size": 201087797 + }, + "project": "jdk", + "scm_ref": "jdk-14+36_adopt", + "updated_at": "2020-03-18T12:13:05Z" + } + ], + "download_count": 364816, + "id": "MDc6UmVsZWFzZTI0NjMxMDAy.AY7rtvmrnWWlIg==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/tag/jdk-14%2B36", + "release_name": "jdk-14+36", + "release_type": "ga", + "timestamp": "2020-03-18T12:11:08Z", + "updated_at": "2020-03-18T12:11:08Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 36, + "major": 14, + "minor": 0, + "openjdk_version": "14+36", + "security": 0, + "semver": "14.0.0+36.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 63201, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "0ddb24efdf5aab541898d19b7667b149a1a64a8bd039b708fc58ee0284fa7e07", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_x64_mac_hotspot_13.0.2_8.tar.gz.sha256.txt", + "download_count": 32531, + "link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_x64_mac_hotspot_13.0.2_8.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_x64_mac_hotspot_13.0.2_8.tar.gz.json", + "name": "OpenJDK13U-jdk_x64_mac_hotspot_13.0.2_8.tar.gz", + "size": 198206427 + }, + "project": "jdk", + "scm_ref": "jdk-13.0.2+8_adopt", + "updated_at": "2020-01-20T16:46:24Z" + } + ], + "download_count": 349677, + "id": "MDc6UmVsZWFzZTIyOTgxNTM1.gtZYwGfBgkb3Gg==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/tag/jdk-13.0.2%2B8", + "release_name": "jdk-13.0.2+8", + "release_type": "ga", + "timestamp": "2020-01-20T16:42:35Z", + "updated_at": "2020-01-20T16:42:35Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 8, + "major": 13, + "minor": 0, + "openjdk_version": "13.0.2+8", + "security": 2, + "semver": "13.0.2+8.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 41508, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "9c82de98ce9bc2353bcf314d85366c9a2c572db034e10a71aa47e804e13748c1", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.1%2B9/OpenJDK13U-jdk_x64_mac_hotspot_13.0.1_9.tar.gz.sha256.txt", + "download_count": 32262, + "link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.1%2B9/OpenJDK13U-jdk_x64_mac_hotspot_13.0.1_9.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.1%2B9/OpenJDK13U-jdk_x64_mac_hotspot_13.0.1_9.tar.gz.json", + "name": "OpenJDK13U-jdk_x64_mac_hotspot_13.0.1_9.tar.gz", + "size": 198205689 + }, + "project": "jdk", + "scm_ref": "jdk-13.0.1+9_adopt", + "updated_at": "2019-10-26T14:44:27Z" + } + ], + "download_count": 680021, + "id": "MDc6UmVsZWFzZTIwOTk4NDA0.srlG2TmLho/j0w==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/tag/jdk-13.0.1%2B9", + "release_name": "jdk-13.0.1+9", + "release_type": "ga", + "timestamp": "2019-10-26T14:43:52Z", + "updated_at": "2019-10-26T14:43:52Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 9, + "major": 13, + "minor": 0, + "openjdk_version": "13.0.1+9", + "security": 1, + "semver": "13.0.1+9.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 37738, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "f948be96daba250b6695e22cb51372d2ba3060e4d778dd09c89548889783099f", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13%2B33/OpenJDK13U-jdk_x64_mac_hotspot_13_33.tar.gz.sha256.txt", + "download_count": 37738, + "link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13%2B33/OpenJDK13U-jdk_x64_mac_hotspot_13_33.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13%2B33/OpenJDK13U-jdk_x64_mac_hotspot_13_33.tar.gz.json", + "name": "OpenJDK13U-jdk_x64_mac_hotspot_13_33.tar.gz", + "size": 198189530 + }, + "project": "jdk", + "scm_ref": "jdk-13+33_adopt", + "updated_at": "2019-09-19T10:20:21Z" + } + ], + "download_count": 226200, + "id": "MDc6UmVsZWFzZTIwMTA0MTUy.trK7qCbNtlMWFw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/tag/jdk-13%2B33", + "release_name": "jdk-13+33", + "release_type": "ga", + "timestamp": "2019-09-19T10:19:58Z", + "updated_at": "2019-09-19T10:19:58Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 33, + "major": 13, + "minor": 0, + "openjdk_version": "13+33", + "security": 0, + "semver": "13.0.0+33.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 24493, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "9919eee037554d40c7d2f219bbd654f2bf119e16a2f4d284d8dedaf525ee59e6", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.sha256.txt", + "download_count": 22907, + "link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.json", + "name": "OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "size": 198392994 + }, + "project": "jdk", + "scm_ref": "jdk-12.0.2+10_adopt", + "updated_at": "2019-07-18T20:27:24Z" + } + ], + "download_count": 396318, + "id": "MDc6UmVsZWFzZTE4NzE2Mzk5.S/VUFSgnrVIv8A==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/tag/jdk-12.0.2%2B10", + "release_name": "jdk-12.0.2+10", + "release_type": "ga", + "timestamp": "2019-07-18T20:26:29Z", + "updated_at": "2019-07-18T20:26:29Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 10, + "major": 12, + "minor": 0, + "openjdk_version": "12.0.2+10", + "security": 2, + "semver": "12.0.2+10.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 5539, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "7acd697e816491d31b24d0ae1867fd63060aa738cfa388757946ae312a60b4f2", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.3/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.sha256.txt", + "download_count": 5539, + "link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.3/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.3/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.json", + "name": "OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "size": 198429049 + }, + "project": "jdk", + "scm_ref": "jdk-12.0.2+10_adopt", + "updated_at": "2019-09-19T17:17:37Z" + } + ], + "download_count": 5879, + "id": "MDc6UmVsZWFzZTIwMTE2ODQ3.QGQl8Nj1qkma4Q==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/tag/jdk-12.0.2%2B10.3", + "release_name": "jdk-12.0.2+10.3", + "release_type": "ga", + "timestamp": "2019-09-19T17:17:26Z", + "updated_at": "2019-12-06T15:10:37Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 3, + "build": 10, + "major": 12, + "minor": 0, + "openjdk_version": "12.0.2+10", + "security": 2, + "semver": "12.0.2+10.3" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 22794, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "2c1a46c0fab6d4bdbc443f23c3f6a313c2de47fbbd9c16b5c1133a88f6c1ab8f", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.2/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.sha256.txt", + "download_count": 637, + "link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.2/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.2%2B10.2/OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz.json", + "name": "OpenJDK12U-jdk_x64_mac_hotspot_12.0.2_10.tar.gz", + "size": 198862174 + }, + "project": "jdk", + "scm_ref": "jdk-12.0.2+10_adopt", + "updated_at": "2019-08-06T10:41:10Z" + } + ], + "download_count": 23563, + "id": "MDc6UmVsZWFzZTE5MTAzMTI3.in65dKG+veAxOg==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/tag/jdk-12.0.2%2B10.2", + "release_name": "jdk-12.0.2+10.2", + "release_type": "ga", + "timestamp": "2019-08-06T10:40:44Z", + "updated_at": "2019-08-06T10:40:44Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 2, + "build": 10, + "major": 12, + "minor": 0, + "openjdk_version": "12.0.2+10", + "security": 2, + "semver": "12.0.2+10.2" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 39519, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "dcb2ab681247298eda018df24166ba01674127083fb02892acf087e6181d8c56", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_x64_mac_hotspot_12.0.1_12.tar.gz.sha256.txt", + "download_count": 33306, + "link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_x64_mac_hotspot_12.0.1_12.tar.gz", + "name": "OpenJDK12U-jdk_x64_mac_hotspot_12.0.1_12.tar.gz", + "size": 198112975 + }, + "project": "jdk", + "updated_at": "2019-04-21T15:12:34Z" + } + ], + "download_count": 1038669, + "id": "MDc6UmVsZWFzZTE2ODg3NDU3", + "release_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/tag/jdk-12.0.1%2B12", + "release_name": "jdk-12.0.1+12", + "release_type": "ga", + "timestamp": "2019-04-21T15:11:56Z", + "updated_at": "2019-04-21T15:11:56Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 12, + "major": 12, + "minor": 0, + "openjdk_version": "12.0.1+12", + "security": 1, + "semver": "12.0.1+12" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 3136, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "985036459d4ef0867a3fe83b0bf87877d8e66a121c7b9c145bb97bd921aaf3f1", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12%2B33/OpenJDK12U-jdk_x64_mac_hotspot_12_33.tar.gz.sha256.txt", + "download_count": 1905, + "link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12%2B33/OpenJDK12U-jdk_x64_mac_hotspot_12_33.tar.gz", + "name": "OpenJDK12U-jdk_x64_mac_hotspot_12_33.tar.gz", + "size": 198099074 + }, + "project": "jdk", + "updated_at": "2019-03-22T12:09:13Z" + } + ], + "download_count": 757289, + "id": "MDc6UmVsZWFzZTE2MjgyMjM2", + "release_link": "https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/tag/jdk-12%2B33", + "release_name": "jdk-12+33", + "release_type": "ga", + "timestamp": "2019-03-22T12:08:43Z", + "updated_at": "2019-03-22T12:08:43Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 33, + "major": 12, + "minor": 0, + "openjdk_version": "12+33", + "security": 0, + "semver": "12.0.0+33" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 75576, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "ee7c98c9d79689aca6e717965747b8bf4eec5413e89d5444cc2bd6dbd59e3811", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.10_9.tar.gz.sha256.txt", + "download_count": 17426, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.10_9.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.10_9.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.10_9.tar.gz", + "size": 186160219 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.10+9_adopt", + "updated_at": "2021-01-22T14:16:47Z" + } + ], + "download_count": 636180, + "id": "MDc6UmVsZWFzZTM2NzcwNDUy.hAVJRiZZTufG+w==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.10%2B9", + "release_name": "jdk-11.0.10+9", + "release_type": "ga", + "timestamp": "2021-01-22T14:15:12Z", + "updated_at": "2021-01-22T14:15:12Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 9, + "major": 11, + "minor": 0, + "openjdk_version": "11.0.10+9", + "security": 10, + "semver": "11.0.10+9" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 108441, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "96bc469f9b02a3b84382a0685b0bd7935e1ad1bd82a0aab9befb5b42a17cbd77", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.tar.gz.sha256.txt", + "download_count": 22211, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.tar.gz", + "size": 185368626 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.9.1+1_adopt", + "updated_at": "2020-11-12T14:10:45Z" + } + ], + "download_count": 815676, + "id": "MDc6UmVsZWFzZTMzODU4MDE1.94IbKUd3vvhzsA==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.9.1%2B1", + "release_name": "jdk-11.0.9.1+1", + "release_type": "ga", + "timestamp": "2020-11-12T14:08:55Z", + "updated_at": "2020-11-12T14:08:55Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 1, + "major": 11, + "minor": 0, + "openjdk_version": "11.0.9.1+1", + "patch": 1, + "security": 9, + "semver": "11.0.9+101" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 45450, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "7b21961ffb2649e572721a0dfad64169b490e987937b661cb4e13a594c21e764", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz.sha256.txt", + "download_count": 11117, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz", + "size": 186006796 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.9+11_adopt", + "updated_at": "2020-10-25T14:43:54Z" + } + ], + "download_count": 423635, + "id": "MDc6UmVsZWFzZTMzMDI4MDcz.dRvNNRwJCgY3Xw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.9%2B11.1", + "release_name": "jdk-11.0.9+11.1", + "release_type": "ga", + "timestamp": "2020-10-25T13:31:15Z", + "updated_at": "2020-10-25T13:31:15Z", + "vendor": "adoptopenjdk", + "version_data": { + "adopt_build_number": 1, + "build": 11, + "major": 11, + "minor": 0, + "openjdk_version": "11.0.9+11", + "security": 9, + "semver": "11.0.9+11.1" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 2456, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "e84b00d74f08f059829bbf121c8423dc37ff65135968c1fcda5839600be4f542", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz.sha256.txt", + "download_count": 1046, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.tar.gz", + "size": 185532704 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.9+11_adopt", + "updated_at": "2020-10-25T13:28:33Z" + } + ], + "download_count": 359580, + "id": "MDc6UmVsZWFzZTMyOTk4MzM5.6h9TT9pzYTK2Kg==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.9%2B11", + "release_name": "jdk-11.0.9+11", + "release_type": "ga", + "timestamp": "2020-10-23T20:52:14Z", + "updated_at": "2020-10-23T20:52:14Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 11, + "major": 11, + "minor": 0, + "openjdk_version": "11.0.9+11", + "security": 9, + "semver": "11.0.9+11" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 149393, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "4a8dadd58cdc32c7e59978971d56aec610be7ee0ddf0dc1d137bb8b78456499f", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz.sha256.txt", + "download_count": 40158, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz", + "size": 185054456 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.8+10_adopt", + "updated_at": "2020-07-15T14:30:51Z" + } + ], + "download_count": 1968658, + "id": "MDc6UmVsZWFzZTI4NTg5Nzcz.pCNBA7G9E1o7pw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.8%2B10", + "release_name": "jdk-11.0.8+10", + "release_type": "ga", + "timestamp": "2020-07-15T14:29:27Z", + "updated_at": "2020-07-15T14:29:27Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 10, + "major": 11, + "minor": 0, + "openjdk_version": "11.0.8+10", + "security": 8, + "semver": "11.0.8+10" + } + }, + { + "binaries": [], + "download_count": 1968658, + "id": "MDc6UmVsZWFzZTI4NTg5Nzcz.pCNBA7G9E1o7pw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.8%2B10", + "release_name": "jdk-11.0.8+10", + "release_type": "ga", + "timestamp": "2020-07-15T14:29:27Z", + "updated_at": "2020-07-15T14:29:27Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 10, + "major": 9, + "minor": 0, + "openjdk_version": "9.0.8+10", + "security": 8, + "semver": "9.0.8+10" + } + }, + { + "binaries": [ + { + "architecture": "x64", + "download_count": 149393, + "heap_size": "normal", + "image_type": "jdk", + "jvm_impl": "hotspot", + "os": "mac", + "package": { + "checksum": "4a8dadd58cdc32c7e59978971d56aec610be7ee0ddf0dc1d137bb8b78456499f", + "checksum_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz.sha256.txt", + "download_count": 40158, + "link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz", + "metadata_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz.json", + "name": "OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.tar.gz", + "size": 185054456 + }, + "project": "jdk", + "scm_ref": "jdk-11.0.8+10_adopt", + "updated_at": "2020-07-15T14:30:51Z" + } + ], + "download_count": 1968658, + "id": "MDc6UmVsZWFzZTI4NTg5Nzcz.pCNBA7G9E1o7pw==", + "release_link": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.8%2B10", + "release_name": "jdk-11.0.8+10", + "release_type": "ga", + "timestamp": "2020-07-15T14:29:27Z", + "updated_at": "2020-07-15T14:29:27Z", + "vendor": "adoptopenjdk", + "version_data": { + "build": 10, + "major": 9, + "minor": 0, + "openjdk_version": "9.0.8+10", + "security": 8, + "semver": "9.0.7+10" + } + } +] \ No newline at end of file diff --git a/__tests__/distributors/adoptium.test.ts b/__tests__/distributors/adoptium.test.ts new file mode 100644 index 000000000..d6b956e73 --- /dev/null +++ b/__tests__/distributors/adoptium.test.ts @@ -0,0 +1,139 @@ +import { HttpClient } from '@actions/http-client'; + +import * as semver from 'semver'; + +import { AdoptiumDistributor } from '../../src/distributors/adoptium/installer'; +import { JavaInstallerOptions } from '../../src/distributors/base-models'; + +let manifestData = require('../data/adoptium.json') as []; + +describe('getAvailableVersions', () => { + let spyHttpClient: jest.SpyInstance; + + describe('build correct url', () => { + beforeEach(() => { + spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); + spyHttpClient.mockReturnValue({ + statusCode: 200, + headers: {}, + result: [] + }); + }); + + afterEach(() => { + jest.resetAllMocks(); + jest.clearAllMocks(); + jest.restoreAllMocks(); + }); + + it.each([ + [ + { version: '11', arch: 'x64', packageType: 'jdk' }, + 'os=mac&architecture=x64&image_type=jdk&release_type=ga&page_size=20&page=0' + ], + [ + { version: '11', arch: 'x86', packageType: 'jdk' }, + 'os=mac&architecture=x86&image_type=jdk&release_type=ga&page_size=20&page=0' + ], + [ + { version: '11', arch: 'x64', packageType: 'jre' }, + 'os=mac&architecture=x64&image_type=jre&release_type=ga&page_size=20&page=0' + ], + [ + { version: '11-ea', arch: 'x64', packageType: 'jdk' }, + 'os=mac&architecture=x64&image_type=jdk&release_type=ea&page_size=20&page=0' + ] + ])( + 'build correct url for %o', + async (installerOptions: JavaInstallerOptions, expectedParameters) => { + const distributor = new AdoptiumDistributor(installerOptions); + const baseUrl = 'https://api.adoptopenjdk.net/v3/assets/version/%5B1.0,100.0%5D'; + const expectedUrl = `${baseUrl}?project=jdk&vendor=adoptopenjdk&heap_size=normal&jvm_impl=hotspot&sort_method=DEFAULT&sort_order=DESC&${expectedParameters}`; + distributor['getPlatformOption'] = () => 'mac'; + await distributor['getAvailableVersions'](); + expect(spyHttpClient.mock.calls).toHaveLength(1); + expect(spyHttpClient.mock.calls[0][0]).toBe(expectedUrl); + } + ); + }); + + afterEach(() => { + jest.resetAllMocks(); + jest.clearAllMocks(); + jest.restoreAllMocks(); + }); + + it('load available versions', async () => { + spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); + spyHttpClient + .mockReturnValueOnce({ + statusCode: 200, + headers: {}, + result: manifestData + }) + .mockReturnValueOnce({ + statusCode: 200, + headers: {}, + result: manifestData + }) + .mockReturnValueOnce({ + statusCode: 200, + headers: {}, + result: [] + }); + + const distributor = new AdoptiumDistributor({ version: '11', arch: 'x64', packageType: 'jdk' }); + const availableVersions = await distributor['getAvailableVersions'](); + expect(availableVersions).not.toBeNull(); + expect(availableVersions.length).toBe(manifestData.length * 2); + }); +}); + +describe('findPackageForDownload', () => { + describe('version is resolved correctly', () => { + it.each([ + ['9', '9.0.7+10'], + ['15', '15.0.2+7'], + ['15.0', '15.0.2+7'], + ['15.0.2', '15.0.2+7'], + ['15.0.1', '15.0.1+9.1'], + //['15.0.1.9', '15.0.1+9.1'], // is not supported yet + ['11.x', '11.0.10+9'], + ['x', '15.0.2+7'], + ['12', '12.0.2+10.3'] // make sure that '12.0.2+10.1', '12.0.2+10.3', '12.0.2+10.2' are sorted correctly + ])('%s -> %s', async (input, expected) => { + const distributor = new AdoptiumDistributor({ + version: '11', + arch: 'x64', + packageType: 'jdk' + }); + distributor['getAvailableVersions'] = async () => manifestData; + const resolvedVersion = await distributor['findPackageForDownload'](new semver.Range(input)); + expect(resolvedVersion.version).toBe(expected); + }); + }); + + it('version is found but binaries list is empty', async () => { + const distributor = new AdoptiumDistributor({ version: '11', arch: 'x64', packageType: 'jdk' }); + distributor['getAvailableVersions'] = async () => manifestData; + await expect( + distributor['findPackageForDownload'](new semver.Range('9.0.8')) + ).rejects.toThrowError(/Could not find satisfied version for semver */); + }); + + it('version is not found', async () => { + const distributor = new AdoptiumDistributor({ version: '11', arch: 'x64', packageType: 'jdk' }); + distributor['getAvailableVersions'] = async () => manifestData; + await expect( + distributor['findPackageForDownload'](new semver.Range('7.x')) + ).rejects.toThrowError(/Could not find satisfied version for semver */); + }); + + it('version list is empty', async () => { + const distributor = new AdoptiumDistributor({ version: '11', arch: 'x64', packageType: 'jdk' }); + distributor['getAvailableVersions'] = async () => []; + await expect( + distributor['findPackageForDownload'](new semver.Range('11')) + ).rejects.toThrowError(/Could not find satisfied version for semver */); + }); +}); diff --git a/src/distributors/adoptium/installer.ts b/src/distributors/adoptium/installer.ts index 59646a1d3..bddb48f94 100644 --- a/src/distributors/adoptium/installer.ts +++ b/src/distributors/adoptium/installer.ts @@ -21,8 +21,17 @@ export class AdoptiumDistributor extends JavaBase { protected async findPackageForDownload(version: semver.Range): Promise { const availableVersions = await this.getAvailableVersions(); - const resolvedFullVersion = availableVersions.find(item => - semver.satisfies(item.version_data.semver, version) + const availableVersionsWithBinaries = availableVersions.filter( + item => item.binaries.length > 0 + ); + const satisfiedVersions = semver.rsort( + availableVersionsWithBinaries + .map(item => item.version_data.semver) + .filter(item => semver.satisfies(item, version)) + ); + const maxSatisfiedVersion = satisfiedVersions.length > 0 ? satisfiedVersions[0] : null; + const resolvedFullVersion = availableVersions.find( + item => item.version_data.semver === maxSatisfiedVersion ); if (!resolvedFullVersion) { @@ -35,12 +44,7 @@ export class AdoptiumDistributor extends JavaBase { ); } - if (resolvedFullVersion.binaries.length < 0) { - throw new Error(`No binaries were found for semver ${version.raw}`); - } - - // take the first element in 'binaries' array - // because it is already filtered by arch and platform options and can't contain > 1 elements + // take the first element in 'binaries' array because it is already filtered above return { version: resolvedFullVersion.version_data.semver, url: resolvedFullVersion.binaries[0].package.link @@ -81,24 +85,22 @@ export class AdoptiumDistributor extends JavaBase { const platform = this.getPlatformOption(); const arch = this.architecture; const imageType = this.packageType; - const heapSize = 'normal'; - const jvmImpl = 'hotspot'; - const versionRange = '[1.0,100.0]'; + const versionRange = '[1.0,100.0]'; // retrieve all available versions const encodedVersionRange = encodeURI(versionRange); const releaseType = this.stable ? 'ga' : 'ea'; console.time('adopt-retrieve-available-versions'); const baseRequestArguments = [ - `os=${platform}`, - `architecture=${arch}`, - `heap_size=${heapSize}`, - `image_type=${imageType}`, - `jvm_impl=${jvmImpl}`, `project=jdk`, 'vendor=adoptopenjdk', + `heap_size=normal`, + `jvm_impl=hotspot`, 'sort_method=DEFAULT', 'sort_order=DESC', + `os=${platform}`, + `architecture=${arch}`, + `image_type=${imageType}`, `release_type=${releaseType}` ].join('&'); @@ -122,17 +124,19 @@ export class AdoptiumDistributor extends JavaBase { page_index++; } - // TO-DO: Debug information, should be removed before release - core.startGroup('Print debug information about available versions'); - console.timeEnd('adopt-retrieve-available-versions'); - console.log(`Available versions: [${availableVersions.length}]`); - console.log(availableVersions.map(item => item.version_data.semver).join(', ')); - core.endGroup(); - core.startGroup('Print detailed debug information about available versions'); - availableVersions.forEach(item => { - console.log(JSON.stringify(item)); - }); - core.endGroup(); + if (core.isDebug()) { + core.startGroup('Print information about available versions'); + console.timeEnd('adopt-retrieve-available-versions'); + console.log(`Available versions: [${availableVersions.length}]`); + console.log(availableVersions.map(item => item.version_data.semver).join(', ')); + core.endGroup(); + core.startGroup('Print full information about available versions'); + availableVersions.forEach(item => { + console.log(JSON.stringify(item)); + }); + core.endGroup(); + } + return availableVersions; } diff --git a/src/distributors/distributor-factory.ts b/src/distributors/distributor-factory.ts index a36310b70..6f972744e 100644 --- a/src/distributors/distributor-factory.ts +++ b/src/distributors/distributor-factory.ts @@ -4,7 +4,6 @@ import { JavaInstallerOptions } from './base-models'; import { LocalDistributor } from './local/installer'; import { ZuluDistributor } from './zulu/installer'; -// TO-DO: confirm distributor names enum JavaDistributor { Adoptium = 'adoptium', Zulu = 'zulu', diff --git a/src/distributors/zulu/installer.ts b/src/distributors/zulu/installer.ts index 5f178ae31..76c999068 100644 --- a/src/distributors/zulu/installer.ts +++ b/src/distributors/zulu/installer.ts @@ -79,11 +79,6 @@ export class ZuluDistributor extends JavaBase { const javafx = features?.includes('fx') ?? false; const releaseStatus = this.stable ? 'ga' : 'ea'; - // TO-DO: Remove after updating README - // java-package field supports features for Azul - // if you specify 'jdk+fx', 'fx' will be passed to features - // any number of features can be specified with comma - console.time('azul-retrieve-available-versions'); const requestArguments = [ `os=${platform}`, @@ -107,17 +102,18 @@ export class ZuluDistributor extends JavaBase { throw new Error(`No versions were found using url '${availableVersionsUrl}'`); } - // TO-DO: Debug information, should be removed before release - // core.startGroup('Print debug information about available versions'); - // console.timeEnd('azul-retrieve-available-versions'); - // console.log(`Available versions: [${availableVersions.length}]`); - // console.log(availableVersions.map(item => item.jdk_version.join('.')).join(', ')); - // core.endGroup(); - // core.startGroup('Print detailed debug information about available versions'); - // availableVersions.forEach(item => { - // console.log(JSON.stringify(item)); - // }); - // core.endGroup(); + if (core.isDebug()) { + core.startGroup('Print information about available versions'); + console.timeEnd('azul-retrieve-available-versions'); + console.log(`Available versions: [${availableVersions.length}]`); + console.log(availableVersions.map(item => item.jdk_version.join('.')).join(', ')); + core.endGroup(); + core.startGroup('Print full information about available versions'); + availableVersions.forEach(item => { + console.log(JSON.stringify(item)); + }); + core.endGroup(); + } return availableVersions; }