Compare commits
	
		
			26 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3a4f6e1af5 | ||
|  | 25f376e348 | ||
|  | d4e4b6bbc1 | ||
|  | 28b532bcb3 | ||
|  | 51ab6d2e30 | ||
|  | 99d3141d9b | ||
|  | 7a6d8a8234 | ||
|  | 7136edc5e8 | ||
|  | 8df1039502 | ||
|  | 870c199c48 | ||
|  | 83a06ff9d9 | ||
|  | 292cc14be8 | ||
|  | b36c23c0d9 | ||
|  | 40b9536ce5 | ||
|  | 0a40ce6f61 | ||
|  | 68b1d5a3da | ||
|  | bcfbca5b71 | ||
|  | 78eae7945c | ||
|  | 2dfa2011c5 | ||
|  | 7467385c61 | ||
|  | 8e04ddff28 | ||
|  | 67fbd726da | ||
|  | 6a0805fcef | ||
|  | fd08b9c8dc | ||
|  | 2e74cbce18 | ||
|  | a1c6c9c867 | 
							
								
								
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| # To get started with Dependabot version updates, you'll need to specify which | ||||
| # package ecosystems to update and where the package manifests are located. | ||||
| # Please see the documentation for all configuration options: | ||||
| # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file | ||||
| 
 | ||||
| version: 2 | ||||
| updates: | ||||
|   # Enable version updates for npm | ||||
|   - package-ecosystem: 'npm' | ||||
|     # Look for `package.json` and `lock` files in the `root` directory | ||||
|     directory: '/' | ||||
|     # Check the npm registry for updates every day (weekdays) | ||||
|     schedule: | ||||
|       interval: 'weekly' | ||||
| 
 | ||||
|   # Enable version updates for GitHub Actions | ||||
|   - package-ecosystem: 'github-actions' | ||||
|     # Workflow files stored in the default location of `.github/workflows` | ||||
|     # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`. | ||||
|     directory: '/' | ||||
|     schedule: | ||||
|       interval: 'weekly' | ||||
							
								
								
									
										26
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @ -21,7 +21,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -46,7 +46,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|     needs: gradle-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @ -70,7 +70,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -93,7 +93,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|     needs: maven-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @ -121,7 +121,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -132,17 +132,21 @@ jobs: | ||||
|           distribution: 'adopt' | ||||
|           java-version: '11' | ||||
|           cache: sbt | ||||
|       - name: Setup SBT | ||||
|         if: matrix.os == 'macos-13' | ||||
|         run: | | ||||
|           echo ""Installing SBT..."" | ||||
|           brew install sbt | ||||
|       - name: Create files to cache | ||||
|         run: sbt update | ||||
| 
 | ||||
|       - name: Check files to cache on macos-latest | ||||
|         if: matrix.os == 'macos-latest' | ||||
|         if: matrix.os == 'macos-13' | ||||
|         run: | | ||||
|           if [ ! -d ~/Library/Caches/Coursier ]; then | ||||
|             echo "::error::The ~/Library/Caches/Coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
| 
 | ||||
|       - name: Check files to cache on windows-latest | ||||
|         if: matrix.os == 'windows-latest' | ||||
|         run: | | ||||
| @ -150,7 +154,6 @@ jobs: | ||||
|             echo "::error::The ~/AppData/Local/Coursier/Cache directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
| 
 | ||||
|       - name: Check files to cache on ubuntu-latest | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
| @ -158,7 +161,6 @@ jobs: | ||||
|             echo "::error::The ~/.cache/coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
| 
 | ||||
|   sbt-restore: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     defaults: | ||||
| @ -168,7 +170,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-22.04] | ||||
|     needs: sbt-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @ -182,14 +184,13 @@ jobs: | ||||
|           cache: sbt | ||||
| 
 | ||||
|       - name: Confirm that ~/Library/Caches/Coursier directory has been made | ||||
|         if: matrix.os == 'macos-latest' | ||||
|         if: matrix.os == 'macos-13' | ||||
|         run: | | ||||
|           if [ ! -d ~/Library/Caches/Coursier ]; then | ||||
|             echo "::error::The ~/Library/Caches/Coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/Library/Caches/Coursier | ||||
| 
 | ||||
|       - name: Confirm that ~/AppData/Local/Coursier/Cache directory has been made | ||||
|         if: matrix.os == 'windows-latest' | ||||
|         run: | | ||||
| @ -198,7 +199,6 @@ jobs: | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/AppData/Local/Coursier/Cache | ||||
| 
 | ||||
|       - name: Confirm that ~/.cache/coursier directory has been made | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|  | ||||
							
								
								
									
										171
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										171
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							| @ -20,7 +20,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|         distribution: [ | ||||
|             'temurin', | ||||
|             'adopt', | ||||
| @ -30,25 +30,38 @@ jobs: | ||||
|             'microsoft', | ||||
|             'semeru', | ||||
|             'corretto', | ||||
|             'dragonwell' | ||||
|             'dragonwell', | ||||
|             'sapmachine', | ||||
|             'jetbrains' | ||||
|           ] # internally 'adopt-hotspot' is the same as 'adopt' | ||||
|         version: ['8', '11', '17'] | ||||
|         version: ['21', '11', '17'] | ||||
|         exclude: | ||||
|           - distribution: microsoft | ||||
|             version: 8 | ||||
|           - distribution: dragonwell | ||||
|             os: macos-latest | ||||
|             os: macos-13 | ||||
|         include: | ||||
|           - distribution: oracle | ||||
|             os: macos-latest | ||||
|             os: macos-13 | ||||
|             version: 17 | ||||
|           - distribution: oracle | ||||
|             os: windows-latest | ||||
|             version: 20 | ||||
|             version: 21 | ||||
|           - distribution: oracle | ||||
|             os: ubuntu-latest | ||||
|             version: 20 | ||||
| 
 | ||||
|             version: 21 | ||||
|           - distribution: graalvm | ||||
|             os: macos-latest | ||||
|             version: 17.0.12 | ||||
|           - distribution: graalvm | ||||
|             os: windows-latest | ||||
|             version: 21 | ||||
|           - distribution: graalvm | ||||
|             os: ubuntu-latest | ||||
|             version: 21 | ||||
|           - distribution: graalvm | ||||
|             os: ubuntu-latest | ||||
|             version: '24-ea' | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -58,6 +71,8 @@ jobs: | ||||
|         with: | ||||
|           java-version: ${{ matrix.version }} | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| @ -73,18 +88,30 @@ jobs: | ||||
|         distribution: ['temurin', 'zulu', 'liberica'] | ||||
|         version: | ||||
|           - '11.0' | ||||
|           - '8.0.302' | ||||
|           - '21.0' | ||||
|           - '17.0.7+7' | ||||
|         include: | ||||
|           - distribution: oracle | ||||
|             os: ubuntu-latest | ||||
|             version: '20.0.1' | ||||
|             version: '21.0.4' | ||||
|           - distribution: graalvm | ||||
|             os: ubuntu-latest | ||||
|             version: '21.0.4' | ||||
|           - distribution: dragonwell | ||||
|             os: ubuntu-latest | ||||
|             version: '11.0' | ||||
|           - distribution: dragonwell | ||||
|             os: ubuntu-latest | ||||
|             version: '11.0.13+9' | ||||
|           - distribution: sapmachine | ||||
|             os: ubuntu-latest | ||||
|             version: '17.0.7' | ||||
|           - distribution: jetbrains | ||||
|             os: ubuntu-latest | ||||
|             version: '11.0.11' | ||||
|           - distribution: jetbrains | ||||
|             os: ubuntu-latest | ||||
|             version: '17.0.7' | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -97,6 +124,8 @@ jobs: | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
| 
 | ||||
|   setup-java-check-latest: | ||||
|     name: ${{ matrix.distribution }} ${{ matrix.version }} - check-latest flag - ${{ matrix.os }} | ||||
| @ -106,7 +135,15 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         distribution: ['temurin', 'zulu', 'liberica', 'dragonwell'] | ||||
|         distribution: | ||||
|           [ | ||||
|             'temurin', | ||||
|             'zulu', | ||||
|             'liberica', | ||||
|             'dragonwell', | ||||
|             'sapmachine', | ||||
|             'jetbrains' | ||||
|           ] | ||||
|         exclude: | ||||
|           - distribution: dragonwell | ||||
|             os: macos-latest | ||||
| @ -120,6 +157,8 @@ jobs: | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|           java-version: 11 | ||||
|           check-latest: true | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| @ -132,7 +171,15 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         distribution: ['temurin', 'zulu', 'liberica', 'dragonwell'] | ||||
|         distribution: | ||||
|           [ | ||||
|             'temurin', | ||||
|             'zulu', | ||||
|             'liberica', | ||||
|             'dragonwell', | ||||
|             'sapmachine', | ||||
|             'jetbrains' | ||||
|           ] | ||||
|         exclude: | ||||
|           - distribution: dragonwell | ||||
|             os: macos-latest | ||||
| @ -147,6 +194,8 @@ jobs: | ||||
|           java-version: | | ||||
|             11 | ||||
|             17 | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       - name: Verify Java env variables | ||||
|         run: | | ||||
|           $versionsArr = "11","17" | ||||
| @ -171,7 +220,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|         version: ['17-ea', '15.0.0-ea.14'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @ -208,6 +257,28 @@ jobs: | ||||
|         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| 
 | ||||
|   setup-java-ea-versions-sapmachine: | ||||
|     name: sapmachine ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} | ||||
|     needs: setup-java-major-minor-versions | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         version: ['17-ea', '21-ea'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
|         with: | ||||
|           java-version: ${{ matrix.version }} | ||||
|           distribution: sapmachine | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| 
 | ||||
|   setup-java-custom-package-type: | ||||
|     name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }} | ||||
|     needs: setup-java-major-minor-versions | ||||
| @ -215,22 +286,23 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|         distribution: ['temurin', 'zulu', 'liberica', 'semeru'] | ||||
|         os: [macos-13, windows-latest, ubuntu-latest] | ||||
|         distribution: | ||||
|           ['temurin', 'zulu', 'liberica', 'semeru', 'sapmachine', 'jetbrains'] | ||||
|         java-package: ['jre'] | ||||
|         version: ['17.0'] | ||||
|         include: | ||||
|           - distribution: 'zulu' | ||||
|             java-package: jre+fx | ||||
|             version: '8' | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'zulu' | ||||
|             java-package: jdk+fx | ||||
|             version: '8.0.242' | ||||
|             version: '21.0' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'liberica' | ||||
|             java-package: jdk+fx | ||||
|             version: '8' | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'liberica' | ||||
|             java-package: jre+fx | ||||
| @ -240,6 +312,47 @@ jobs: | ||||
|             java-package: jre | ||||
|             version: '8' | ||||
|             os: windows-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jdk+jcef | ||||
|             version: '11' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jdk+jcef | ||||
|             version: '17' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jdk+jcef | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jre+jcef | ||||
|             version: '11' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jre+jcef | ||||
|             version: '17' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jre+jcef | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jdk+ft | ||||
|             version: '17' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jdk+ft | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jre+ft | ||||
|             version: '17' | ||||
|             os: ubuntu-latest | ||||
|           - distribution: 'jetbrains' | ||||
|             java-package: jre+ft | ||||
|             version: '21' | ||||
|             os: ubuntu-latest | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
| @ -250,6 +363,8 @@ jobs: | ||||
|           java-version: ${{ matrix.version }} | ||||
|           java-package: ${{ matrix.java-package }} | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| @ -263,7 +378,7 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         # x86 is not supported on macOS | ||||
|         os: [windows-latest, ubuntu-latest] | ||||
|         os: [windows-latest, ubuntu-22.04] | ||||
|         distribution: ['liberica', 'zulu', 'corretto'] | ||||
|         version: ['11'] | ||||
|     steps: | ||||
| @ -294,10 +409,10 @@ jobs: | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Create .java-version file | ||||
|         shell: bash | ||||
|         run: echo "8" > .java-version | ||||
|         run: echo "17" > .java-version | ||||
|       - name: Create .tool-versions file | ||||
|         shell: bash | ||||
|         run: echo "java 8" > .tool-versions | ||||
|         run: echo "java 17" > .tool-versions | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -351,10 +466,10 @@ jobs: | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Create .java-version file | ||||
|         shell: bash | ||||
|         run: echo "11.0.2" > .java-version | ||||
|         run: echo "17.0.10" > .java-version | ||||
|       - name: Create .tool-versions file | ||||
|         shell: bash | ||||
|         run: echo "java 11.0.2" > .tool-versions | ||||
|         run: echo "java 17.0.10" > .tool-versions | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -362,11 +477,11 @@ jobs: | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|           java-version-file: ${{matrix.java-version-file }} | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "11.0.2" "${{ steps.setup-java.outputs.path }}" | ||||
|         run: bash __tests__/verify-java.sh "17.0.10" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
| 
 | ||||
|   setup-java-version-from-file-major-minor-patch-with-dist: | ||||
|     name: ${{ matrix.distribution }} version from file 'openjdk64-11.0.2' - ${{ matrix.os }} | ||||
|     name: ${{ matrix.distribution }} version from file 'openjdk64-17.0.10' - ${{ matrix.os }} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
| @ -379,10 +494,10 @@ jobs: | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Create .java-version file | ||||
|         shell: bash | ||||
|         run: echo "openjdk64-11.0.2" > .java-version | ||||
|         run: echo "openjdk64-17.0.10" > .java-version | ||||
|       - name: Create .tool-versions file | ||||
|         shell: bash | ||||
|         run: echo "java openjdk64-11.0.2" > .tool-versions | ||||
|         run: echo "java openjdk64-17.0.10" > .tool-versions | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -390,5 +505,5 @@ jobs: | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|           java-version-file: ${{matrix.java-version-file }} | ||||
|       - name: Verify Java | ||||
|         run: bash __tests__/verify-java.sh "11.0.2" "${{ steps.setup-java.outputs.path }}" | ||||
|         run: bash __tests__/verify-java.sh "17.0.10" "${{ steps.setup-java.outputs.path }}" | ||||
|         shell: bash | ||||
|  | ||||
							
								
								
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| name: 'Publish Immutable Action Version' | ||||
| 
 | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
| 
 | ||||
| jobs: | ||||
|   publish: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|       id-token: write | ||||
|       packages: write | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checking out | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Publish | ||||
|         id: publish | ||||
|         uses: actions/publish-immutable-action@v0.0.4 | ||||
| @ -23,7 +23,7 @@ jobs: | ||||
|     steps: | ||||
|       - name: Update the ${{ env.TAG_NAME }} tag | ||||
|         id: update-major-tag | ||||
|         uses: actions/publish-action@v0.2.2 | ||||
|         uses: actions/publish-action@v0.3.0 | ||||
|         with: | ||||
|           source-tag: ${{ env.TAG_NAME }} | ||||
|           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/http-client.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/http-client.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/camel-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/camel-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/commander.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/commander.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/dot-object.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/dot-object.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/fs.realpath.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/fs.realpath.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/glob.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/glob.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/inflight.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/inflight.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/inherits.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/inherits.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/lodash.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/lodash.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/lower-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/lower-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/no-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/no-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/once.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/once.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/pascal-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/pascal-case.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/path-is-absolute.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/path-is-absolute.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/path-to-regexp.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/path-to-regexp.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/prettier.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/prettier.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/ts-poet.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/ts-poet.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/twirp-ts.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/twirp-ts.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/wrappy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/wrappy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/yaml.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/yaml.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								README.md
									
									
									
									
									
								
							| @ -91,8 +91,8 @@ steps: | ||||
| #### Supported version syntax | ||||
| The `java-version` input supports an exact version or a version range using [SemVer](https://semver.org/) notation: | ||||
| - major versions: `8`, `11`, `16`, `17`, `21` | ||||
| - more specific versions: `17.0`, `11.0`, `11.0.4`, `8.0.232`, `8.0.282+8` | ||||
| - early access (EA) versions: `15-ea`, `15.0.0-ea`, `15.0.0-ea.2`, `15.0.0+2-ea` | ||||
| - more specific versions: `8.0.282+8`, `8.0.232`, `11.0`, `11.0.4`, `17.0` | ||||
| - early access (EA) versions: `15-ea`, `15.0.0-ea` | ||||
| 
 | ||||
| #### Supported distributions | ||||
| Currently, the following distributions are supported: | ||||
| @ -108,6 +108,9 @@ Currently, the following distributions are supported: | ||||
| | `semeru` | IBM Semeru Runtime Open Edition | [Link](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/) | [Link](https://openjdk.java.net/legal/gplv2+ce.html) | | ||||
| | `oracle` | Oracle JDK | [Link](https://www.oracle.com/java/technologies/downloads/) | [Link](https://java.com/freeuselicense) | ||||
| | `dragonwell` | Alibaba Dragonwell JDK | [Link](https://dragonwell-jdk.io/) | [Link](https://www.aliyun.com/product/dragonwell/) | ||||
| | `sapmachine` | SAP SapMachine JDK/JRE | [Link](https://sapmachine.io/) | [Link](https://github.com/SAP/SapMachine/blob/sapmachine/LICENSE) | ||||
| | `graalvm` | Oracle GraalVM | [Link](https://www.graalvm.org/) | [Link](https://www.oracle.com/downloads/licenses/graal-free-license.html) | ||||
| | `jetbrains` | JetBrains Runtime | [Link](https://github.com/JetBrains/JetBrainsRuntime/) | [Link](https://github.com/JetBrains/JetBrainsRuntime/blob/main/LICENSE) | ||||
| 
 | ||||
| **NOTE:** The different distributors can provide discrepant list of available versions / supported configurations. Please refer to the official documentation to see the list of supported versions. | ||||
| 
 | ||||
| @ -257,6 +260,8 @@ In the example above multiple JDKs are installed for the same job. The result af | ||||
|   - [Amazon Corretto](docs/advanced-usage.md#Amazon-Corretto) | ||||
|   - [Oracle](docs/advanced-usage.md#Oracle) | ||||
|   - [Alibaba Dragonwell](docs/advanced-usage.md#Alibaba-Dragonwell) | ||||
|   - [SapMachine](docs/advanced-usage.md#SapMachine) | ||||
|   - [GraalVM](docs/advanced-usage.md#GraalVM) | ||||
| - [Installing custom Java package type](docs/advanced-usage.md#Installing-custom-Java-package-type) | ||||
| - [Installing custom Java architecture](docs/advanced-usage.md#Installing-custom-Java-architecture) | ||||
| - [Installing custom Java distribution from local file](docs/advanced-usage.md#Installing-Java-from-local-file) | ||||
| @ -268,6 +273,15 @@ In the example above multiple JDKs are installed for the same job. The result af | ||||
| - [Modifying Maven Toolchains](docs/advanced-usage.md#Modifying-Maven-Toolchains) | ||||
| - [Java Version File](docs/advanced-usage.md#Java-version-file) | ||||
| 
 | ||||
| ## Recommended permissions | ||||
| 
 | ||||
| When using the `setup-java` action in your GitHub Actions workflow, it is recommended to set the following permissions to ensure proper functionality: | ||||
| 
 | ||||
| ```yaml | ||||
| permissions: | ||||
|   contents: read # access to check out code and install dependencies | ||||
| ``` | ||||
| 
 | ||||
| ## License | ||||
| 
 | ||||
| The scripts and documentation in this project are released under the [MIT License](LICENSE). | ||||
|  | ||||
| @ -481,6 +481,54 @@ | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "11.0.23.20.9" : { | ||||
|       "alpine-linux" : { | ||||
|         "x64" : { | ||||
|           "Extended" : { | ||||
|             "sha256" : "9d61fefb4f1a8368f8e7eec17893934b438b67f360cb8b7ef727ab459695d14e", | ||||
|             "name" : "Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_alpine-linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_alpine-linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "linux" : { | ||||
|         "aarch64" : { | ||||
|           "Extended" : { | ||||
|             "sha256" : "2f399231644fe1e3f1b4b5298e85f21f4863017767e9e5afb00ee46e2d7780d9", | ||||
|             "name" : "Alibaba_Dragonwell_Extended_11.0.23.20.9_aarch64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_aarch64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "x64" : { | ||||
|           "Extended" : { | ||||
|             "sha256" : "662dfdc584e21bcfb7ed87942b5bb4e71a7b7467d4c82211a3615d0834d1c833", | ||||
|             "name" : "Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "riscv" : { | ||||
|           "Extended" : { | ||||
|             "sha256" : "f3488461cbfd95e6c08ad2dc01c51950b9c629c46eea6305002311b263ce2ad9", | ||||
|             "name" : "Alibaba_Dragonwell_Extended_11.0.23.20.9_riscv64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_riscv64_linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "windows" : { | ||||
|         "x64" : { | ||||
|           "Extended" : { | ||||
|             "sha256" : "ba8dba2b7f2279f87220f396afcce49cb26482705deb5144c6e22a90ba443f9d", | ||||
|             "name" : "Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_windows.zip", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_windows.zip" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "17":{ | ||||
| @ -1134,5 +1182,143 @@ | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "21" : { | ||||
|     "21.0.3.0.3.9" : { | ||||
|       "alpine-linux" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "c3c5d193a0a6aee8757fd3036dc13b7921a4306b089bf8759ba6b822d1e8416e", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_alpine-linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_alpine-linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "linux" : { | ||||
|         "aarch64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "3cc309627ad2a9515ca50cdeff9eff118f14326b37eaa536b758570082aeb242", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.3.0.3.9_aarch64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_aarch64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "1c0508db048c0b50e2d61b2cc5a5390d3b9bcafec6e185d2cb53dde1fc530203", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "riscv" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "e374698f8ee9c66b8d4a59ba50d0511aa654b55514732bc787e29c9afaddf846", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.3.0.3.9_riscv64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_riscv64_linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "windows" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "0b75fc888cb2a9c7e050132fd020c30cbe65f3179feb36812a7c6be3c76ad277", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_windows.zip", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_x64_windows.zip" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "21.0.2.0.2.13" : { | ||||
|       "alpine-linux" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "71a391987fdd569385c0afe1aaf16dbd48d127e14306793ef9ac0e0986b9632c", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_alpine-linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.2.0.2%2B13_jdk-21.0.2-ga/Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_alpine-linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "linux" : { | ||||
|         "aarch64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "307321a399c206f8d56e0ce5c65921f9448ec9882dfb81ffc5e841b8fb5f8ed8", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.2.0.2.13_aarch64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.2.0.2%2B13_jdk-21.0.2-ga/Alibaba_Dragonwell_Standard_21.0.2.0.2.13_aarch64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "24198f0d436bb913b152181e07205647b05da01c196f5c10a96e9a998b10381a", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.2.0.2%2B13_jdk-21.0.2-ga/Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "riscv" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "970a49103b8971952e46c81be844bc3776caca04da8456337f12e3a7d2a18011", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.2.0.2.13_riscv64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.2.0.2%2B13_jdk-21.0.2-ga/Alibaba_Dragonwell_Standard_21.0.2.0.2.13_riscv64_linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "windows" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "b77de54be5ef1595fc568f6f18fbd4b61d64d99a0c9c5ef78a84018b4f82032b", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_windows.zip", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.2.0.2%2B13_jdk-21.0.2-ga/Alibaba_Dragonwell_Standard_21.0.2.0.2.13_x64_windows.zip" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "21.0.1.0.1.12" : { | ||||
|       "alpine-linux" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "b9cea58bffe555484b831ff6d7cdb277c07e86a76d32b373ec35fa21ecb5fdc9", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_alpine-linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.1.0.1%2B12_jdk-21.0.1-ga/Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_alpine-linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "linux" : { | ||||
|         "aarch64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "d36cef494ccc1939c6b5da04133cfdbe0b03956fd04147aef46014536bc5a37b", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.1.0.1.12_aarch64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.1.0.1%2B12_jdk-21.0.1-ga/Alibaba_Dragonwell_Standard_21.0.1.0.1.12_aarch64_linux.tar.gz" | ||||
|           } | ||||
|         }, | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "dfb8d325a98b8f577d72fd639cc54feee325eec8ebba497868184c8405a1cf41", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_linux.tar.gz", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.1.0.1%2B12_jdk-21.0.1-ga/Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_linux.tar.gz" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "windows" : { | ||||
|         "x64" : { | ||||
|           "Standard" : { | ||||
|             "sha256" : "b8ab99ed9060341f75edb8cc238830fbfd608e51536e43f34bd45c3e968ebab5", | ||||
|             "name" : "Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_windows.zip", | ||||
|             "content_type" : "application/zip", | ||||
|             "download_url" : "https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.1.0.1%2B12_jdk-21.0.1-ga/Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_windows.zip" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										1454
									
								
								__tests__/data/jetbrains.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1454
									
								
								__tests__/data/jetbrains.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,1454 @@ | ||||
| [ | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b465.3", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 465.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b465.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b458.1", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 458.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b458.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b453.2", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 453.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b453.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.11b1207.24", | ||||
|       "semver": "17.0.11", | ||||
|       "build": 1207.24, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.11-linux-x64-b1207.24.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.11b1207.23", | ||||
|       "semver": "17.0.11", | ||||
|       "build": 1207.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.11-linux-x64-b1207.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b446.1", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 446.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b446.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.14", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b829.27", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 829.27, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b829.27.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.23", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.12", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.21", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.21, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.21.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.6", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b375.1", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 375.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b375.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.1", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1186.1", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1186.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1186.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1171.14", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1171.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1171.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b829.26", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 829.26, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b829.26.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b346.3", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 346.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b346.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1000.48", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1000.48, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1000.48.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b341.4", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 341.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b341.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.17", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.17, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.17.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1166.2", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1166.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1166.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1162.7", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1162.7, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1162.7.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.11", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.9", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.7", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.7, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.7.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1000.47", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1000.47, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1000.47.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1000.46", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1000.46, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1000.46.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.3", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1080.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1080.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1080.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1072.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1072.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1072.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1070.2", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1070.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1070.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1063.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1063.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1063.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1000.32", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1000.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1000.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1059.3", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1059.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1059.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8b1000.22", | ||||
|       "semver": "17.0.8", | ||||
|       "build": 1000.22, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8-linux-x64-b1000.22.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8b1000.8", | ||||
|       "semver": "17.0.8", | ||||
|       "build": 1000.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8-linux-x64-b1000.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.6", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.5", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.5, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.5.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b985.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 985.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b985.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b979.4", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 979.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b979.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b829.16", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 829.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b829.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b966.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 966.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b966.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b964.1", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 964.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b964.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b829.14", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 829.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b829.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b953.1", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 953.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b953.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.9", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b469.82", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 469.82, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b469.82.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.5", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.5, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.5.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b653.34", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 653.34, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b653.34.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.4", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b653.32", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 653.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b653.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b802.4", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 802.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b802.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b802.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 802.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b802.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b785.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 785.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b785.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b779.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 779.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b779.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b762.1", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 762.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b762.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.25", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b759.1", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 759.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b759.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.23", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.14", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b469.71", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 469.71, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b469.71.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_16b2043.64", | ||||
|       "semver": "11.0.16", | ||||
|       "build": 2043.64, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_16-linux-x64-b2043.64.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.6", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b469.67", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 469.67, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b469.67.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b653.1", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 653.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b653.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b646.8", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 646.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b646.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b629.2", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 629.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b629.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b617.2", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 617.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b617.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b469.62", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 469.62, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b469.62.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b597.1", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 597.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b597.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4b469.53", | ||||
|       "semver": "17.0.4", | ||||
|       "build": 469.53, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4-linux-x64-b469.53.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4b469.44", | ||||
|       "semver": "17.0.4", | ||||
|       "build": 469.44, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4-linux-x64-b469.44.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.3b469.37", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.37, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.37.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.32", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.30", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.19", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.19, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.19.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b498.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 498.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b498.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.16", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.12", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b463.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 463.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b463.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b423.10", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 423.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b423.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_15b2043.56", | ||||
|       "semver": "11.0.15", | ||||
|       "build": 2043.56, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_15-linux-x64-b2043.56.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.45", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.45, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_14_1-linux-x64-b2043.45.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.2b396.4", | ||||
|       "semver": "17.0.2", | ||||
|       "build": 396.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.2-linux-x64-b396.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.25", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.22", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.22, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.22.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.17", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.17, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.17.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.14", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.11", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b2043.2", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 2043.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b2043.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b1751.46", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 1751.46, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b1751.46.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b1993.2", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 1993.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b1993.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_2b315.1", | ||||
|       "semver": "17.0.2", | ||||
|       "build": 315.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_2-linux-x64-b315.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b1982.1", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 1982.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b1982.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1890.3", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1890.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1890.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.25", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.24", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.24, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.24.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.21", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.21, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.21.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_1b164.8", | ||||
|       "semver": "17.0.1", | ||||
|       "build": 164.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_1-linux-x64-b164.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.19", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.19, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.19.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_13-b1504.49", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1504.49, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1504.49.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_1b164.4", | ||||
|       "semver": "17.0.1", | ||||
|       "build": 164.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_1-linux-x64-b164.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.16", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1751.11", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1751.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1751.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1729.1", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1729.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1729.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1715.4", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1715.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1715.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1692.9", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1692.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1692.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.37", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.37, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.37.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1665.1", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1665.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1665.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.28", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.28, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.28.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.27", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.27, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.27.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.16", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.13", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.13, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.13.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.12", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1542.1", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1542.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1542.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.8", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "11_0_11b1536.2", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1536.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1536.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b465.3", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 465.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b465.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b458.1", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 458.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b458.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b453.2", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 453.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b453.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.11b1207.24", | ||||
|       "semver": "17.0.11", | ||||
|       "build": 1207.24, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.11-linux-x64-b1207.24.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.11b1207.23", | ||||
|       "semver": "17.0.11", | ||||
|       "build": 1207.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.11-linux-x64-b1207.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.3b446.1", | ||||
|       "semver": "21.0.3", | ||||
|       "build": 446.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.3-linux-x64-b446.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.14", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b829.27", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 829.27, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b829.27.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.23", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.12", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.21", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.21, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.21.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.6", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b375.1", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 375.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b375.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1207.1", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1207.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1207.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1186.1", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1186.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1186.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1171.14", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1171.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1171.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b829.26", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 829.26, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b829.26.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b346.3", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 346.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b346.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1000.48", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1000.48, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1000.48.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-21.0.2b341.4", | ||||
|       "semver": "21.0.2", | ||||
|       "build": 341.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-21.0.2-linux-x64-b341.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.10b1087.17", | ||||
|       "semver": "17.0.10", | ||||
|       "build": 1087.17, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.10-linux-x64-b1087.17.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1166.2", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1166.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1166.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1162.7", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1162.7, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1162.7.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.11", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.9", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.7", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.7, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.7.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1000.47", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1000.47, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1000.47.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1000.46", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1000.46, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1000.46.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.9b1087.3", | ||||
|       "semver": "17.0.9", | ||||
|       "build": 1087.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.9-linux-x64-b1087.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1080.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1080.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1080.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1072.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1072.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1072.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1070.2", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1070.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1070.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1063.1", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1063.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1063.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1000.32", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1000.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1000.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8.1b1059.3", | ||||
|       "semver": "17.0.8.1", | ||||
|       "build": 1059.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8.1-linux-x64-b1059.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8b1000.22", | ||||
|       "semver": "17.0.8", | ||||
|       "build": 1000.22, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8-linux-x64-b1000.22.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.8b1000.8", | ||||
|       "semver": "17.0.8", | ||||
|       "build": 1000.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.8-linux-x64-b1000.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.6", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.5", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.5, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.5.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b1000.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 1000.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b1000.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b985.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 985.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b985.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b979.4", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 979.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b979.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b829.16", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 829.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b829.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b966.2", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 966.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b966.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b964.1", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 964.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b964.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b829.14", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 829.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b829.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.7b953.1", | ||||
|       "semver": "17.0.7", | ||||
|       "build": 953.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.7-linux-x64-b953.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.9", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b469.82", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 469.82, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b469.82.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.5", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.5, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.5.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b653.34", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 653.34, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b653.34.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.4", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b829.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 829.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b829.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b653.32", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 653.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b653.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b802.4", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 802.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b802.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b802.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 802.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b802.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b785.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 785.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b785.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.6b779.1", | ||||
|       "semver": "17.0.6", | ||||
|       "build": 779.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.6-linux-x64-b779.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b762.1", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 762.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b762.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.25", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b759.1", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 759.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b759.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.23", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.23, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.23.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.14", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b469.71", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 469.71, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b469.71.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_16b2043.64", | ||||
|       "semver": "11.0.16", | ||||
|       "build": 2043.64, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_16-linux-x64-b2043.64.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b653.6", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 653.6, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b653.6.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.5b469.67", | ||||
|       "semver": "17.0.5", | ||||
|       "build": 469.67, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.5-linux-x64-b469.67.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b653.1", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 653.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b653.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b646.8", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 646.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b646.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b629.2", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 629.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b629.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b617.2", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 617.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b617.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b469.62", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 469.62, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b469.62.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4.1b597.1", | ||||
|       "semver": "17.0.4.1", | ||||
|       "build": 597.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4.1-linux-x64-b597.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4b469.53", | ||||
|       "semver": "17.0.4", | ||||
|       "build": 469.53, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4-linux-x64-b469.53.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.4b469.44", | ||||
|       "semver": "17.0.4", | ||||
|       "build": 469.44, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.4-linux-x64-b469.44.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr-release-17.0.3b469.37", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.37, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.37.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.32", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.32, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.32.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.30", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.19", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.19, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.19.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b498.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 498.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b498.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.16", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.12", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b469.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 469.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b469.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b463.3", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 463.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b463.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.3b423.10", | ||||
|       "semver": "17.0.3", | ||||
|       "build": 423.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.3-linux-x64-b423.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_15b2043.56", | ||||
|       "semver": "11.0.15", | ||||
|       "build": 2043.56, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_15-linux-x64-b2043.56.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.45", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.45, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_nomod-11_0_14_1-linux-x64-b2043.45.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17.0.2b396.4", | ||||
|       "semver": "17.0.2", | ||||
|       "build": 396.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17.0.2-linux-x64-b396.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.25", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.22", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.22, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.22.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.17", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.17, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.17.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.14", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.14, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.14.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b2043.11", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 2043.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b2043.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b2043.2", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 2043.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b2043.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14_1b1751.46", | ||||
|       "semver": "11.0.14.1", | ||||
|       "build": 1751.46, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14_1-linux-x64-b1751.46.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b1993.2", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 1993.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b1993.2.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_2b315.1", | ||||
|       "semver": "17.0.2", | ||||
|       "build": 315.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_2-linux-x64-b315.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_14b1982.1", | ||||
|       "semver": "11.0.14", | ||||
|       "build": 1982.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_14-linux-x64-b1982.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1890.3", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1890.3, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1890.3.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.25", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.25, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.25.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.24", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.24, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.24.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.21", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.21, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.21.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_1b164.8", | ||||
|       "semver": "17.0.1", | ||||
|       "build": 164.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_1-linux-x64-b164.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.19", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.19, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.19.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_13-b1504.49", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1504.49, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1504.49.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr17_0_1b164.4", | ||||
|       "semver": "17.0.1", | ||||
|       "build": 164.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-17_0_1-linux-x64-b164.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_13b1751.16", | ||||
|       "semver": "11.0.13", | ||||
|       "build": 1751.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_13-linux-x64-b1751.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1751.11", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1751.11, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1751.11.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1729.1", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1729.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1729.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1715.4", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1715.4, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1715.4.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1692.9", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1692.9, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1692.9.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.37", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.37, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.37.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jbr11_0_12b1665.1", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1665.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1665.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.28", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.28, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.28.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_12-b1504.27", | ||||
|       "semver": "11.0.12", | ||||
|       "build": 1504.27, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_12-linux-x64-b1504.27.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.16", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.16, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.16.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.13", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.13, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.13.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.12", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.12, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.12.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1542.1", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1542.1, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1542.1.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "jb11_0_11-b1504.8", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1504.8, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1504.8.tar.gz" | ||||
|     }, | ||||
|     { | ||||
|       "tag_name": "11_0_11b1536.2", | ||||
|       "semver": "11.0.11", | ||||
|       "build": 1536.2, | ||||
|       "url": "https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk-11_0_11-linux-x64-b1536.2.tar.gz" | ||||
|     } | ||||
|   ] | ||||
							
								
								
									
										87242
									
								
								__tests__/data/sapmachine.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87242
									
								
								__tests__/data/sapmachine.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -41,15 +41,16 @@ describe('getAvailableVersions', () => { | ||||
|   describe('getAvailableVersions', () => { | ||||
|     it.each([ | ||||
|       ['8', 'x86', 'linux', 0], | ||||
|       ['8', 'aarch64', 'linux', 24], | ||||
|       ['8.6.6', 'x64', 'linux', 27], | ||||
|       ['8', 'aarch64', 'linux', 28], | ||||
|       ['8.6.6', 'x64', 'linux', 31], | ||||
|       ['8', 'x86', 'anolis', 0], | ||||
|       ['8', 'x86', 'windows', 0], | ||||
|       ['8', 'x86', 'mac', 0], | ||||
|       ['11', 'x64', 'linux', 27], | ||||
|       ['11', 'aarch64', 'linux', 24], | ||||
|       ['17', 'riscv', 'linux', 0], | ||||
|       ['16.0.1', 'x64', 'linux', 27] | ||||
|       ['11', 'x64', 'linux', 31], | ||||
|       ['11', 'aarch64', 'linux', 28], | ||||
|       ['17', 'riscv', 'linux', 3], | ||||
|       ['16.0.1', 'x64', 'linux', 31], | ||||
|       ['21', 'x64', 'linux', 31] | ||||
|     ])( | ||||
|       'should get right number of available versions from JSON', | ||||
|       async ( | ||||
| @ -103,25 +104,31 @@ describe('getAvailableVersions', () => { | ||||
|         '11', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'https://github.com/alibaba/dragonwell11/releases/download/dragonwell-extended-11.0.17.13_jdk-11.0.17-ga/Alibaba_Dragonwell_Extended_11.0.17.13.8_x64_linux.tar.gz' | ||||
|         'https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'linux', | ||||
|         'aarch64', | ||||
|         'https://github.com/alibaba/dragonwell11/releases/download/dragonwell-extended-11.0.17.13_jdk-11.0.17-ga/Alibaba_Dragonwell_Extended_11.0.17.13.8_aarch64_linux.tar.gz' | ||||
|         'https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_aarch64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'linux', | ||||
|         'riscv', | ||||
|         'https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_riscv64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'windows', | ||||
|         'x64', | ||||
|         'https://github.com/alibaba/dragonwell11/releases/download/dragonwell-extended-11.0.17.13_jdk-11.0.17-ga/Alibaba_Dragonwell_Extended_11.0.17.13.8_x64_windows.zip' | ||||
|         'https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_windows.zip' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'alpine-linux', | ||||
|         'x64', | ||||
|         'https://github.com/alibaba/dragonwell11/releases/download/dragonwell-extended-11.0.17.13_jdk-11.0.17-ga/Alibaba_Dragonwell_Extended_11.0.17.13.8_x64_alpine-linux.tar.gz' | ||||
|         'https://github.com/dragonwell-project/dragonwell11/releases/download/dragonwell-extended-11.0.23.20_jdk-11.0.23-ga/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_alpine-linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11.0.17', | ||||
| @ -158,6 +165,30 @@ describe('getAvailableVersions', () => { | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'https://github.com/alibaba/dragonwell17/releases/download/dragonwell-standard-17.0.4.0.4%2B8_jdk-17.0.4-ga/Alibaba_Dragonwell_Standard_17.0.4.0.4%2B8_x64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17.0.4+8', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'https://github.com/alibaba/dragonwell17/releases/download/dragonwell-standard-17.0.4.0.4%2B8_jdk-17.0.4-ga/Alibaba_Dragonwell_Standard_17.0.4.0.4%2B8_x64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '21', | ||||
|         'linux', | ||||
|         'aarch64', | ||||
|         'https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_aarch64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '21.0.3+9', | ||||
|         'linux', | ||||
|         'riscv', | ||||
|         'https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.3.0.3%2B9_jdk-21.0.3-ga/Alibaba_Dragonwell_Standard_21.0.3.0.3.9_riscv64_linux.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '21.0.1+12', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'https://github.com/dragonwell-project/dragonwell21/releases/download/dragonwell-standard-21.0.1.0.1%2B12_jdk-21.0.1-ga/Alibaba_Dragonwell_Standard_21.0.1.0.1.12_x64_linux.tar.gz' | ||||
|       ] | ||||
|     ])( | ||||
|       'should return proper link according to the specified java-version, platform and arch', | ||||
|  | ||||
							
								
								
									
										152
									
								
								__tests__/distributors/graalvm-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								__tests__/distributors/graalvm-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,152 @@ | ||||
| import {GraalVMDistribution} from '../../src/distributions/graalvm/installer'; | ||||
| import os from 'os'; | ||||
| import * as core from '@actions/core'; | ||||
| import {getDownloadArchiveExtension} from '../../src/util'; | ||||
| import {HttpClient} from '@actions/http-client'; | ||||
| 
 | ||||
| describe('findPackageForDownload', () => { | ||||
|   let distribution: GraalVMDistribution; | ||||
|   let spyDebug: jest.SpyInstance; | ||||
|   let spyHttpClient: jest.SpyInstance; | ||||
| 
 | ||||
|   beforeEach(() => { | ||||
|     distribution = new GraalVMDistribution({ | ||||
|       version: '', | ||||
|       architecture: 'x64', | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
| 
 | ||||
|     spyDebug = jest.spyOn(core, 'debug'); | ||||
|     spyDebug.mockImplementation(() => {}); | ||||
|   }); | ||||
| 
 | ||||
|   it.each([ | ||||
|     [ | ||||
|       '21', | ||||
|       '21', | ||||
|       'https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' | ||||
|     ], | ||||
|     [ | ||||
|       '21.0.4', | ||||
|       '21.0.4', | ||||
|       'https://download.oracle.com/graalvm/21/archive/graalvm-jdk-21.0.4_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' | ||||
|     ], | ||||
|     [ | ||||
|       '17', | ||||
|       '17', | ||||
|       'https://download.oracle.com/graalvm/17/latest/graalvm-jdk-17_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' | ||||
|     ], | ||||
|     [ | ||||
|       '17.0.12', | ||||
|       '17.0.12', | ||||
|       'https://download.oracle.com/graalvm/17/archive/graalvm-jdk-17.0.12_{{OS_TYPE}}-x64_bin.{{ARCHIVE_TYPE}}' | ||||
|     ] | ||||
|   ])('version is %s -> %s', async (input, expectedVersion, expectedUrl) => { | ||||
|     /* Needed only for this particular test because /latest/ urls tend to change */ | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'head'); | ||||
|     spyHttpClient.mockReturnValue( | ||||
|       Promise.resolve({ | ||||
|         message: { | ||||
|           statusCode: 200 | ||||
|         } | ||||
|       }) | ||||
|     ); | ||||
| 
 | ||||
|     const result = await distribution['findPackageForDownload'](input); | ||||
| 
 | ||||
|     jest.restoreAllMocks(); | ||||
| 
 | ||||
|     expect(result.version).toBe(expectedVersion); | ||||
|     const osType = distribution.getPlatform(); | ||||
|     const archiveType = getDownloadArchiveExtension(); | ||||
|     const url = expectedUrl | ||||
|       .replace('{{OS_TYPE}}', osType) | ||||
|       .replace('{{ARCHIVE_TYPE}}', archiveType); | ||||
|     expect(result.url).toBe(url); | ||||
|   }); | ||||
| 
 | ||||
|   it.each([ | ||||
|     [ | ||||
|       '24-ea', | ||||
|       /^https:\/\/github\.com\/graalvm\/oracle-graalvm-ea-builds\/releases\/download\/jdk-24\.0\.0-ea\./ | ||||
|     ] | ||||
|   ])('version is %s -> %s', async (version, expectedUrlPrefix) => { | ||||
|     /* Needed only for this particular test because /latest/ urls tend to change */ | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'head'); | ||||
|     spyHttpClient.mockReturnValue( | ||||
|       Promise.resolve({ | ||||
|         message: { | ||||
|           statusCode: 200 | ||||
|         } | ||||
|       }) | ||||
|     ); | ||||
| 
 | ||||
|     const eaDistro = new GraalVMDistribution({ | ||||
|       version, | ||||
|       architecture: '', // to get default value
 | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
| 
 | ||||
|     const versionWithoutEA = version.split('-')[0]; | ||||
|     const result = await eaDistro['findPackageForDownload'](versionWithoutEA); | ||||
| 
 | ||||
|     jest.restoreAllMocks(); | ||||
| 
 | ||||
|     expect(result.url).toEqual(expect.stringMatching(expectedUrlPrefix)); | ||||
|   }); | ||||
| 
 | ||||
|   it.each([ | ||||
|     ['amd64', 'x64'], | ||||
|     ['arm64', 'aarch64'] | ||||
|   ])( | ||||
|     'defaults to os.arch(): %s mapped to distro arch: %s', | ||||
|     async (osArch: string, distroArch: string) => { | ||||
|       jest.spyOn(os, 'arch').mockReturnValue(osArch); | ||||
|       jest.spyOn(os, 'platform').mockReturnValue('linux'); | ||||
| 
 | ||||
|       const version = '21'; | ||||
|       const distro = new GraalVMDistribution({ | ||||
|         version, | ||||
|         architecture: '', // to get default value
 | ||||
|         packageType: 'jdk', | ||||
|         checkLatest: false | ||||
|       }); | ||||
| 
 | ||||
|       const osType = distribution.getPlatform(); | ||||
|       if (osType === 'windows' && distroArch == 'aarch64') { | ||||
|         return; // skip, aarch64 is not available for Windows
 | ||||
|       } | ||||
|       const archiveType = getDownloadArchiveExtension(); | ||||
|       const result = await distro['findPackageForDownload'](version); | ||||
|       const expectedUrl = `https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_${osType}-${distroArch}_bin.${archiveType}`; | ||||
| 
 | ||||
|       expect(result.url).toBe(expectedUrl); | ||||
|     } | ||||
|   ); | ||||
| 
 | ||||
|   it('should throw an error', async () => { | ||||
|     await expect(distribution['findPackageForDownload']('8')).rejects.toThrow( | ||||
|       /GraalVM is only supported for JDK 17 and later/ | ||||
|     ); | ||||
|     await expect(distribution['findPackageForDownload']('11')).rejects.toThrow( | ||||
|       /GraalVM is only supported for JDK 17 and later/ | ||||
|     ); | ||||
|     await expect(distribution['findPackageForDownload']('18')).rejects.toThrow( | ||||
|       /Could not find GraalVM for SemVer */ | ||||
|     ); | ||||
| 
 | ||||
|     const unavailableEADistro = new GraalVMDistribution({ | ||||
|       version: '17-ea', | ||||
|       architecture: '', // to get default value
 | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     await expect( | ||||
|       unavailableEADistro['findPackageForDownload']('17') | ||||
|     ).rejects.toThrow( | ||||
|       /No GraalVM EA build found\. Are you sure java-version: '17-ea' is correct\?/ | ||||
|     ); | ||||
|   }); | ||||
| }); | ||||
							
								
								
									
										120
									
								
								__tests__/distributors/jetbrains-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								__tests__/distributors/jetbrains-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,120 @@ | ||||
| import https from 'https'; | ||||
| import {HttpClient} from '@actions/http-client'; | ||||
| import {JetBrainsDistribution} from '../../src/distributions/jetbrains/installer'; | ||||
| 
 | ||||
| import manifestData from '../data/jetbrains.json'; | ||||
| import os from 'os'; | ||||
| 
 | ||||
| describe('getAvailableVersions', () => { | ||||
|   let spyHttpClient: jest.SpyInstance; | ||||
| 
 | ||||
|   beforeEach(() => { | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||
|     spyHttpClient.mockReturnValue({ | ||||
|       statusCode: 200, | ||||
|       headers: {}, | ||||
|       result: [] | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   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 as any | ||||
|     }); | ||||
| 
 | ||||
|     const distribution = new JetBrainsDistribution({ | ||||
|       version: '17', | ||||
|       architecture: 'x64', | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     const availableVersions = await distribution['getAvailableVersions'](); | ||||
|     expect(availableVersions).not.toBeNull(); | ||||
| 
 | ||||
|     const length = | ||||
|       os.platform() === 'win32' | ||||
|         ? manifestData.length - 1 | ||||
|         : manifestData.length + 1; | ||||
|     expect(availableVersions.length).toBe(length); | ||||
|   }, 10_000); | ||||
| }); | ||||
| 
 | ||||
| describe('findPackageForDownload', () => { | ||||
|   it.each([ | ||||
|     ['17', '17.0.11+1207.24'], | ||||
|     ['11.0', '11.0.16+2043.64'], | ||||
|     ['11.0.11', '11.0.11+1542.1'], | ||||
|     ['21.0.2', '21.0.2+375.1'], | ||||
|     ['21', '21.0.3+465.3'], | ||||
|     ['x', '21.0.3+465.3'] | ||||
|   ])('version is resolved correctly %s -> %s', async (input, expected) => { | ||||
|     const distribution = new JetBrainsDistribution({ | ||||
|       version: input, | ||||
|       architecture: 'x64', | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     distribution['getAvailableVersions'] = async () => manifestData as any; | ||||
|     const resolvedVersion = await distribution['findPackageForDownload'](input); | ||||
|     expect(resolvedVersion.version).toBe(expected); | ||||
|   }); | ||||
| 
 | ||||
|   it.each(['17', '11.0', '11.0.11', '21.0.2', '21'])( | ||||
|     'version %s can be downloaded', | ||||
|     async input => { | ||||
|       const distribution = new JetBrainsDistribution({ | ||||
|         version: input, | ||||
|         architecture: 'x64', | ||||
|         packageType: 'jdk', | ||||
|         checkLatest: false | ||||
|       }); | ||||
|       distribution['getAvailableVersions'] = async () => manifestData as any; | ||||
|       const resolvedVersion = await distribution['findPackageForDownload']( | ||||
|         input | ||||
|       ); | ||||
|       const url = resolvedVersion.url; | ||||
|       const options = {method: 'HEAD'}; | ||||
| 
 | ||||
|       https.request(url, options, res => { | ||||
|         // JetBrains uses 403 for inexistent packages
 | ||||
|         expect(res.statusCode).not.toBe(403); | ||||
|         res.resume(); | ||||
|       }); | ||||
|     } | ||||
|   ); | ||||
| 
 | ||||
|   it('version is not found', async () => { | ||||
|     const distribution = new JetBrainsDistribution({ | ||||
|       version: '8.0.452', | ||||
|       architecture: 'x64', | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     distribution['getAvailableVersions'] = async () => manifestData as any; | ||||
|     await expect(distribution['findPackageForDownload']('8.x')).rejects.toThrow( | ||||
|       /Could not find satisfied version for SemVer */ | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|   it('version list is empty', async () => { | ||||
|     const distribution = new JetBrainsDistribution({ | ||||
|       version: '8', | ||||
|       architecture: 'x64', | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     distribution['getAvailableVersions'] = async () => []; | ||||
|     await expect(distribution['findPackageForDownload']('8')).rejects.toThrow( | ||||
|       /Could not find satisfied version for SemVer */ | ||||
|     ); | ||||
|   }); | ||||
| }); | ||||
| @ -115,7 +115,8 @@ describe('findPackageForDownload', () => { | ||||
|       const expectedUrl = `https://download.oracle.com/java/18/archive/jdk-18_${osType}-${distroArch}_bin.${archiveType}`; | ||||
| 
 | ||||
|       expect(result.url).toBe(expectedUrl); | ||||
|     } | ||||
|     }, | ||||
|     10000 | ||||
|   ); | ||||
| 
 | ||||
|   it('should throw an error', async () => { | ||||
|  | ||||
							
								
								
									
										294
									
								
								__tests__/distributors/sapmachine-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										294
									
								
								__tests__/distributors/sapmachine-installer.test.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,294 @@ | ||||
| import {HttpClient} from '@actions/http-client'; | ||||
| import {SapMachineDistribution} from '../../src/distributions/sapmachine/installer'; | ||||
| import * as utils from '../../src/util'; | ||||
| 
 | ||||
| import manifestData from '../data/sapmachine.json'; | ||||
| 
 | ||||
| describe('getAvailableVersions', () => { | ||||
|   let spyHttpClient: jest.SpyInstance; | ||||
|   let spyUtilGetDownloadArchiveExtension: jest.SpyInstance; | ||||
| 
 | ||||
|   beforeEach(() => { | ||||
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson'); | ||||
|     spyHttpClient.mockReturnValue({ | ||||
|       statusCode: 200, | ||||
|       headers: {}, | ||||
|       result: manifestData | ||||
|     }); | ||||
| 
 | ||||
|     spyUtilGetDownloadArchiveExtension = jest.spyOn( | ||||
|       utils, | ||||
|       'getDownloadArchiveExtension' | ||||
|     ); | ||||
|     spyUtilGetDownloadArchiveExtension.mockReturnValue('tar.gz'); | ||||
|   }); | ||||
| 
 | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|     jest.restoreAllMocks(); | ||||
|   }); | ||||
| 
 | ||||
|   const mockPlatform = ( | ||||
|     distribution: SapMachineDistribution, | ||||
|     platform: string | ||||
|   ) => { | ||||
|     distribution['getPlatformOption'] = () => platform; | ||||
|     const mockedExtension = platform == 'windows' ? 'zip' : 'tar.gz'; | ||||
|     spyUtilGetDownloadArchiveExtension.mockReturnValue(mockedExtension); | ||||
|   }; | ||||
| 
 | ||||
|   describe('shouldFallbackToBackupUrl', () => { | ||||
|     it('should return correct release when the primary URL is not available', async () => { | ||||
|       spyHttpClient.mockReturnValueOnce({ | ||||
|         statusCode: 404, | ||||
|         headers: {}, | ||||
|         result: '' | ||||
|       }); | ||||
|       spyHttpClient.mockReturnValueOnce({ | ||||
|         statusCode: 200, | ||||
|         headers: {}, | ||||
|         result: manifestData | ||||
|       }); | ||||
| 
 | ||||
|       const version = '17'; | ||||
|       const distribution = new SapMachineDistribution({ | ||||
|         version: version, | ||||
|         architecture: 'x64', | ||||
|         packageType: 'jdk', | ||||
|         checkLatest: false | ||||
|       }); | ||||
| 
 | ||||
|       mockPlatform(distribution, 'linux'); | ||||
| 
 | ||||
|       const availableVersion = await distribution['findPackageForDownload']( | ||||
|         version | ||||
|       ); | ||||
|       expect(availableVersion).not.toBeNull(); | ||||
|       expect(availableVersion.url).toBe( | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_linux-x64_bin.tar.gz' | ||||
|       ); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   describe('getAvailableVersions', () => { | ||||
|     it.each([ | ||||
|       ['11', 'x64', 'linux', 71], | ||||
|       ['11', 'aarch64', 'linux', 54], | ||||
|       ['17', 'riscv', 'linux', 0], | ||||
|       ['16.0.1', 'x64', 'linux', 71], | ||||
|       ['23-ea', 'x64', 'linux', 798], | ||||
|       ['23-ea', 'aarch64', 'windows', 0], | ||||
|       ['23-ea', 'x64', 'windows', 750] | ||||
|     ])( | ||||
|       'should get right number of available versions from JSON', | ||||
|       async ( | ||||
|         jdkVersion: string, | ||||
|         arch: string, | ||||
|         platform: string, | ||||
|         len: number | ||||
|       ) => { | ||||
|         const distribution = new SapMachineDistribution({ | ||||
|           version: jdkVersion, | ||||
|           architecture: arch, | ||||
|           packageType: 'jdk', | ||||
|           checkLatest: false | ||||
|         }); | ||||
|         mockPlatform(distribution, platform); | ||||
| 
 | ||||
|         const availableVersions = await distribution['getAvailableVersions'](); | ||||
|         expect(availableVersions).not.toBeNull(); | ||||
|         expect(availableVersions.length).toBe(len); | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|   describe('findPackageForDownload', () => { | ||||
|     it.each([ | ||||
|       [ | ||||
|         '11', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.22/sapmachine-jdk-11.0.22_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'linux', | ||||
|         'aarch64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.22/sapmachine-jdk-11.0.22_linux-aarch64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '11', | ||||
|         'windows', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.22/sapmachine-jdk-11.0.22_windows-x64_bin.zip' | ||||
|       ], | ||||
|       [ | ||||
|         '11.0.17', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.17/sapmachine-jdk-11.0.17_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'linux', | ||||
|         'aarch64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_linux-aarch64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'windows', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_windows-x64_bin.zip' | ||||
|       ], | ||||
|       [ | ||||
|         '17.0.4', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.4.1/sapmachine-jdk-17.0.4.1_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jre', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jre-17.0.10_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'linux', | ||||
|         'aarch64', | ||||
|         'jre', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jre-17.0.10_linux-aarch64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'windows', | ||||
|         'x64', | ||||
|         'jre', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jre-17.0.10_windows-x64_bin.zip' | ||||
|       ], | ||||
|       [ | ||||
|         '17.0.4', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jre', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.4.1/sapmachine-jre-17.0.4.1_linux-x64_bin.tar.gz' | ||||
|       ], | ||||
|       [ | ||||
|         '23-ea', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-23%2B15/sapmachine-jdk-23-ea.15_linux-x64_bin.tar.gz', | ||||
|         '23' | ||||
|       ], | ||||
|       [ | ||||
|         '21.0.2+2-ea', | ||||
|         'linux', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-21.0.2%2B2/sapmachine-jdk-21.0.2-ea.2_linux-x64_bin.tar.gz', | ||||
|         '21.0.2+2' | ||||
|       ], | ||||
|       [ | ||||
|         '17', | ||||
|         'linux-musl', | ||||
|         'x64', | ||||
|         'jdk', | ||||
|         'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_linux-x64-musl_bin.tar.gz' | ||||
|       ] | ||||
|     ])( | ||||
|       'should return proper link according to the specified java-version, platform and arch', | ||||
|       async ( | ||||
|         version: string, | ||||
|         platform: string, | ||||
|         arch: string, | ||||
|         packageType: string, | ||||
|         expectedLink: string, | ||||
|         normalizedVersion: string = version | ||||
|       ) => { | ||||
|         const distribution = new SapMachineDistribution({ | ||||
|           version: version, | ||||
|           architecture: arch, | ||||
|           packageType: packageType, | ||||
|           checkLatest: false | ||||
|         }); | ||||
|         mockPlatform(distribution, platform); | ||||
| 
 | ||||
|         const availableVersion = await distribution['findPackageForDownload']( | ||||
|           normalizedVersion | ||||
|         ); | ||||
|         expect(availableVersion).not.toBeNull(); | ||||
|         expect(availableVersion.url).toBe(expectedLink); | ||||
|       } | ||||
|     ); | ||||
| 
 | ||||
|     it.each([ | ||||
|       ['8', 'linux', 'x64'], | ||||
|       ['8', 'macos', 'aarch64'], | ||||
|       ['23', 'macos', 'aarch64'], | ||||
|       ['17', 'linux', 'riscv'], | ||||
|       ['23', 'linux', 'x64'], | ||||
|       ['25-ea', 'linux', 'x64', '25'], | ||||
|       ['8-ea', 'linux', 'x64', '8'], | ||||
|       ['21.0.3+7', 'linux', 'x64', '21.0.3+7'], | ||||
|       ['21.0.3+8-ea', 'linux', 'x64', '21.0.3+8'], | ||||
|       ['17', 'linux-muse', 'aarch64'] | ||||
|     ])( | ||||
|       'should throw when required version of JDK can not be found in the JSON', | ||||
|       async ( | ||||
|         version: string, | ||||
|         platform: string, | ||||
|         arch: string, | ||||
|         normalizedVersion: string = version | ||||
|       ) => { | ||||
|         const distribution = new SapMachineDistribution({ | ||||
|           version: version, | ||||
|           architecture: arch, | ||||
|           packageType: 'jdk', | ||||
|           checkLatest: false | ||||
|         }); | ||||
|         mockPlatform(distribution, platform); | ||||
| 
 | ||||
|         await expect( | ||||
|           distribution['findPackageForDownload'](normalizedVersion) | ||||
|         ).rejects.toThrow( | ||||
|           `Couldn't find any satisfied version for the specified java-version: "${normalizedVersion}" and architecture: "${arch}".` | ||||
|         ); | ||||
|       } | ||||
|     ); | ||||
| 
 | ||||
|     it('should throw when required package type is not supported', async () => { | ||||
|       const jdkVersion = '17'; | ||||
|       const arch = 'x64'; | ||||
|       const platform = 'linux'; | ||||
|       const distribution = new SapMachineDistribution({ | ||||
|         version: jdkVersion, | ||||
|         architecture: arch, | ||||
|         packageType: 'jdk+fx', | ||||
|         checkLatest: false | ||||
|       }); | ||||
|       mockPlatform(distribution, platform); | ||||
|       await expect( | ||||
|         distribution['findPackageForDownload'](jdkVersion) | ||||
|       ).rejects.toThrow( | ||||
|         'SapMachine provides only the `jdk` and `jre` package type' | ||||
|       ); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
| @ -207,7 +207,7 @@ describe('findPackageForDownload', () => { | ||||
|       }); | ||||
|       distribution['getAvailableVersions'] = async () => []; | ||||
|       await expect(distribution['findPackageForDownload']('8')).rejects.toThrow( | ||||
|         `Unsupported architecture for IBM Semeru: ${arch}, the following are supported: x64, x86, ppc64le, ppc64, s390x, aarch64` | ||||
|         `Unsupported architecture for IBM Semeru: ${arch} for your current OS version, the following are supported: x64, x86, ppc64le, ppc64, s390x, aarch64` | ||||
|       ); | ||||
|     } | ||||
|   ); | ||||
|  | ||||
| @ -3,7 +3,8 @@ import * as core from '@actions/core'; | ||||
| import { | ||||
|   convertVersionToSemver, | ||||
|   isVersionSatisfies, | ||||
|   isCacheFeatureAvailable | ||||
|   isCacheFeatureAvailable, | ||||
|   isGhes | ||||
| } from '../src/util'; | ||||
| 
 | ||||
| jest.mock('@actions/cache'); | ||||
| @ -80,3 +81,41 @@ describe('convertVersionToSemver', () => { | ||||
|     expect(actual).toBe(expected); | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| describe('isGhes', () => { | ||||
|   const pristineEnv = process.env; | ||||
| 
 | ||||
|   beforeEach(() => { | ||||
|     jest.resetModules(); | ||||
|     process.env = {...pristineEnv}; | ||||
|   }); | ||||
| 
 | ||||
|   afterAll(() => { | ||||
|     process.env = pristineEnv; | ||||
|   }); | ||||
| 
 | ||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is not defined', async () => { | ||||
|     delete process.env['GITHUB_SERVER_URL']; | ||||
|     expect(isGhes()).toBeFalsy(); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is set to github.com', async () => { | ||||
|     process.env['GITHUB_SERVER_URL'] = 'https://github.com'; | ||||
|     expect(isGhes()).toBeFalsy(); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL', async () => { | ||||
|     process.env['GITHUB_SERVER_URL'] = 'https://contoso.ghe.com'; | ||||
|     expect(isGhes()).toBeFalsy(); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix', async () => { | ||||
|     process.env['GITHUB_SERVER_URL'] = 'https://mock-github.localhost'; | ||||
|     expect(isGhes()).toBeFalsy(); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns true when the GITHUB_SERVER_URL environment variable is set to some other URL', async () => { | ||||
|     process.env['GITHUB_SERVER_URL'] = 'https://src.onpremise.fabrikam.com'; | ||||
|     expect(isGhes()).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
							
								
								
									
										10570
									
								
								dist/cleanup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10570
									
								
								dist/cleanup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11257
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11257
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -8,6 +8,9 @@ | ||||
|   - [Amazon Corretto](#Amazon-Corretto) | ||||
|   - [Oracle](#Oracle) | ||||
|   - [Alibaba Dragonwell](#Alibaba-Dragonwell) | ||||
|   - [SapMachine](#SapMachine) | ||||
|   - [GraalVM](#GraalVM) | ||||
|   - [JetBrains](#JetBrains) | ||||
| - [Installing custom Java package type](#Installing-custom-Java-package-type) | ||||
| - [Installing custom Java architecture](#Installing-custom-Java-architecture) | ||||
| - [Installing custom Java distribution from local file](#Installing-Java-from-local-file) | ||||
| @ -142,6 +145,91 @@ steps: | ||||
| - run: java -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| ### SapMachine | ||||
| **NOTE:** An OpenJDK release maintained and supported by SAP | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-java@v4 | ||||
|   with: | ||||
|     distribution: 'sapmachine' | ||||
|     java-version: '21' | ||||
| - run: java -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| ### GraalVM | ||||
| **NOTE:** Oracle GraalVM is only available for JDK 17 and later. | ||||
| 
 | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-java@v4 | ||||
|   with: | ||||
|     distribution: 'graalvm' | ||||
|     java-version: '21' | ||||
| - run: | | ||||
|     java -cp java HelloWorldApp | ||||
|     native-image -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| ### JetBrains | ||||
| 
 | ||||
| **NOTE:** JetBrains is only available for LTS versions on 11 or later (11, 17, 21, etc.). | ||||
| 
 | ||||
| Not all minor LTS versions are guarenteed to be available, since JetBrains considers what to ship IntelliJ IDEA with, most commonly on JDK 11. | ||||
| For example, `11.0.24` is not available but `11.0.16` is. | ||||
| 
 | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-java@v4 | ||||
|   with: | ||||
|     distribution: 'jetbrains' | ||||
|     java-version: '11' | ||||
| - run: java -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| The JetBrains installer uses the GitHub API to fetch the latest version. If you believe your project is going to be running into rate limits, you can provide a | ||||
| GitHub token to the action to increase the rate limit. Set the `GITHUB_TOKEN` environment variable to the value of your GitHub token in the workflow file. | ||||
| 
 | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-java@v4 | ||||
|   with: | ||||
|     distribution: 'jetbrains' | ||||
|     java-version: '17' | ||||
|     java-package: 'jdk' # optional (jdk, jre, jdk+jcef, jre+jcef, jdk+ft, or jre+ft) - defaults to jdk | ||||
|   env: | ||||
|     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
| - run: java -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| You can specify your package type (as shown in the [releases page](https://github.com/JetBrains/JetBrainsRuntime/releases/)) in the `java-package` parameter.  | ||||
| The available package types are: | ||||
| 
 | ||||
| - `jdk` - JBRSDK | ||||
| - `jre` - JBR (Vanilla) | ||||
| - `jdk+jcef` - JBRSDK with JCEF | ||||
| - `jre+jcef` - JBR with JCEF | ||||
| - `jdk+ft` - JBRSDK (FreeType) | ||||
| - `jre+ft` - JBR (FreeType) | ||||
| 
 | ||||
| ### GraalVM | ||||
| **NOTE:** Oracle GraalVM is only available for JDK 17 and later. | ||||
| 
 | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-java@v4 | ||||
|   with: | ||||
|     distribution: 'graalvm' | ||||
|     java-version: '21' | ||||
| - run: | | ||||
|     java -cp java HelloWorldApp | ||||
|     native-image -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| ## Installing custom Java package type | ||||
| ```yaml | ||||
| steps: | ||||
| @ -154,7 +242,6 @@ steps: | ||||
| - run: java -cp java HelloWorldApp | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| ## Installing custom Java architecture | ||||
| 
 | ||||
| ```yaml | ||||
| @ -529,16 +616,16 @@ steps: | ||||
|   If the `java-version-file` input is specified, the action will extract the version from the file and install it. | ||||
|    | ||||
|   Supported files are .java-version and .tool-versions. | ||||
| In .java-version file, only the version should be specified, e.g., 17.0.7. | ||||
| In .tool-versions file, java version should be preceded by the java keyword, e.g., java 17.0.7. | ||||
| .java-version recognizes all variants of the version description according to [jenv](https://github.com/jenv/jenv) and .tool-version recognizes all variants of the version description according to [asdf](https://github.com/asdf-vm/asdf). | ||||
|   In .java-version file, only the version should be specified (e.g., 17.0.7). | ||||
|   In .tool-versions file, java version should be preceded by the java keyword (e.g., java 17.0.7). | ||||
|   The `.java-version` file recognizes all variants of the version description according to [jenv](https://github.com/jenv/jenv). Similarly, the `.tool-versions` file supports version specifications in accordance with [asdf](https://github.com/asdf-vm/asdf) standards, adhering to Semantic Versioning ([semver](https://semver.org/)). | ||||
|    | ||||
|   If both java-version and java-version-file inputs are provided, the java-version input will be used. | ||||
| 
 | ||||
| Valid entry options: | ||||
| ``` | ||||
| major versions: 8, 11, 16, 17, 21 | ||||
| more specific versions: 1.8.0.2, 17.0, 11.0, 11.0.4, 8.0.232, 8.0.282+8 | ||||
| more specific versions: 8.0.282+8, 8.0.232, 11.0, 11.0.4, 17.0 | ||||
| early access (EA) versions: 15-ea, 15.0.0-ea | ||||
| versions with specified distribution: openjdk64-11.0.2 | ||||
| ``` | ||||
|  | ||||
							
								
								
									
										299
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										299
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -9,18 +9,18 @@ | ||||
|       "version": "4.0.0", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/cache": "^3.2.4", | ||||
|         "@actions/cache": "^4.0.0", | ||||
|         "@actions/core": "^1.10.0", | ||||
|         "@actions/exec": "^1.0.4", | ||||
|         "@actions/glob": "^0.4.0", | ||||
|         "@actions/http-client": "^2.2.1", | ||||
|         "@actions/http-client": "^2.2.3", | ||||
|         "@actions/io": "^1.0.2", | ||||
|         "@actions/tool-cache": "^2.0.1", | ||||
|         "semver": "^7.6.0", | ||||
|         "xmlbuilder2": "^2.4.0" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@types/jest": "^29.5.12", | ||||
|         "@types/jest": "^29.5.14", | ||||
|         "@types/node": "^20.11.24", | ||||
|         "@types/semver": "^7.5.8", | ||||
|         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
| @ -47,11 +47,12 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/cache": { | ||||
|       "version": "3.2.4", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.4.tgz", | ||||
|       "integrity": "sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==", | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.0.0.tgz", | ||||
|       "integrity": "sha512-WIuxjnZ44lNYtIS4fqSaYvF00hORdy3cSin+jx8xNgBVGWnNIAiCBHjlwusVQlcgExoQC9pHXGrDsZyZr7rCDQ==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.10.0", | ||||
|         "@actions/core": "^1.11.1", | ||||
|         "@actions/exec": "^1.0.1", | ||||
|         "@actions/glob": "^0.1.0", | ||||
|         "@actions/http-client": "^2.1.1", | ||||
| @ -59,8 +60,9 @@ | ||||
|         "@azure/abort-controller": "^1.1.0", | ||||
|         "@azure/ms-rest-js": "^2.6.0", | ||||
|         "@azure/storage-blob": "^12.13.0", | ||||
|         "@protobuf-ts/plugin": "^2.9.4", | ||||
|         "semver": "^6.3.1", | ||||
|         "uuid": "^3.3.3" | ||||
|         "twirp-ts": "^2.5.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/cache/node_modules/@actions/glob": { | ||||
| @ -81,20 +83,12 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/core": { | ||||
|       "version": "1.10.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", | ||||
|       "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", | ||||
|       "version": "1.11.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", | ||||
|       "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", | ||||
|       "dependencies": { | ||||
|         "@actions/http-client": "^2.0.1", | ||||
|         "uuid": "^8.3.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/core/node_modules/uuid": { | ||||
|       "version": "8.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||||
|       "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", | ||||
|       "bin": { | ||||
|         "uuid": "dist/bin/uuid" | ||||
|         "@actions/exec": "^1.1.1", | ||||
|         "@actions/http-client": "^2.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/exec": { | ||||
| @ -115,9 +109,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/http-client": { | ||||
|       "version": "2.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.1.tgz", | ||||
|       "integrity": "sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==", | ||||
|       "version": "2.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", | ||||
|       "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "tunnel": "^0.0.6", | ||||
|         "undici": "^5.25.4" | ||||
| @ -1604,6 +1599,83 @@ | ||||
|         "node": ">=8.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/plugin": { | ||||
|       "version": "2.9.4", | ||||
|       "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", | ||||
|       "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", | ||||
|       "license": "Apache-2.0", | ||||
|       "dependencies": { | ||||
|         "@protobuf-ts/plugin-framework": "^2.9.4", | ||||
|         "@protobuf-ts/protoc": "^2.9.4", | ||||
|         "@protobuf-ts/runtime": "^2.9.4", | ||||
|         "@protobuf-ts/runtime-rpc": "^2.9.4", | ||||
|         "typescript": "^3.9" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "protoc-gen-dump": "bin/protoc-gen-dump", | ||||
|         "protoc-gen-ts": "bin/protoc-gen-ts" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/plugin-framework": { | ||||
|       "version": "2.9.4", | ||||
|       "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", | ||||
|       "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", | ||||
|       "license": "(Apache-2.0 AND BSD-3-Clause)", | ||||
|       "dependencies": { | ||||
|         "@protobuf-ts/runtime": "^2.9.4", | ||||
|         "typescript": "^3.9" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": { | ||||
|       "version": "3.9.10", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", | ||||
|       "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", | ||||
|       "license": "Apache-2.0", | ||||
|       "bin": { | ||||
|         "tsc": "bin/tsc", | ||||
|         "tsserver": "bin/tsserver" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/plugin/node_modules/typescript": { | ||||
|       "version": "3.9.10", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", | ||||
|       "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", | ||||
|       "license": "Apache-2.0", | ||||
|       "bin": { | ||||
|         "tsc": "bin/tsc", | ||||
|         "tsserver": "bin/tsserver" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/protoc": { | ||||
|       "version": "2.9.4", | ||||
|       "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", | ||||
|       "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", | ||||
|       "license": "Apache-2.0", | ||||
|       "bin": { | ||||
|         "protoc": "protoc.js" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/runtime": { | ||||
|       "version": "2.9.4", | ||||
|       "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", | ||||
|       "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", | ||||
|       "license": "(Apache-2.0 AND BSD-3-Clause)" | ||||
|     }, | ||||
|     "node_modules/@protobuf-ts/runtime-rpc": { | ||||
|       "version": "2.9.4", | ||||
|       "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", | ||||
|       "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", | ||||
|       "license": "Apache-2.0", | ||||
|       "dependencies": { | ||||
|         "@protobuf-ts/runtime": "^2.9.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@sinclair/typebox": { | ||||
|       "version": "0.27.8", | ||||
|       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", | ||||
| @ -1703,10 +1775,11 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/jest": { | ||||
|       "version": "29.5.12", | ||||
|       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", | ||||
|       "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", | ||||
|       "version": "29.5.14", | ||||
|       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", | ||||
|       "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "expect": "^29.0.0", | ||||
|         "pretty-format": "^29.0.0" | ||||
| @ -2249,12 +2322,12 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/braces": { | ||||
|       "version": "3.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", | ||||
|       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", | ||||
|       "version": "3.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", | ||||
|       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "fill-range": "^7.0.1" | ||||
|         "fill-range": "^7.1.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
| @ -2328,6 +2401,16 @@ | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/camel-case": { | ||||
|       "version": "4.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", | ||||
|       "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "pascal-case": "^3.1.2", | ||||
|         "tslib": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/camelcase": { | ||||
|       "version": "5.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | ||||
| @ -2462,6 +2545,15 @@ | ||||
|         "node": ">= 0.8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/commander": { | ||||
|       "version": "6.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", | ||||
|       "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": ">= 6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/concat-map": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||
| @ -2495,10 +2587,11 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/cross-spawn": { | ||||
|       "version": "7.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|       "version": "7.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", | ||||
|       "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "path-key": "^3.1.0", | ||||
|         "shebang-command": "^2.0.0", | ||||
| @ -2604,6 +2697,19 @@ | ||||
|         "node": ">=6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/dot-object": { | ||||
|       "version": "2.1.5", | ||||
|       "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", | ||||
|       "integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "commander": "^6.1.0", | ||||
|         "glob": "^7.1.6" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "dot-object": "bin/dot-object" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/electron-to-chromium": { | ||||
|       "version": "1.4.589", | ||||
|       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.589.tgz", | ||||
| @ -3102,9 +3208,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/fill-range": { | ||||
|       "version": "7.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | ||||
|       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", | ||||
|       "version": "7.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", | ||||
|       "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "to-regex-range": "^5.0.1" | ||||
| @ -3165,8 +3271,7 @@ | ||||
|     "node_modules/fs.realpath": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | ||||
|       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" | ||||
|     }, | ||||
|     "node_modules/fsevents": { | ||||
|       "version": "2.3.3", | ||||
| @ -3234,7 +3339,6 @@ | ||||
|       "version": "7.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", | ||||
|       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "fs.realpath": "^1.0.0", | ||||
|         "inflight": "^1.0.4", | ||||
| @ -3402,7 +3506,6 @@ | ||||
|       "version": "1.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||||
|       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "once": "^1.3.0", | ||||
|         "wrappy": "1" | ||||
| @ -3411,8 +3514,7 @@ | ||||
|     "node_modules/inherits": { | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||
|       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||||
|     }, | ||||
|     "node_modules/is-arrayish": { | ||||
|       "version": "0.2.1", | ||||
| @ -4255,6 +4357,12 @@ | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/lodash": { | ||||
|       "version": "4.17.21", | ||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||||
|       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", | ||||
|       "license": "MIT" | ||||
|     }, | ||||
|     "node_modules/lodash.memoize": { | ||||
|       "version": "4.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", | ||||
| @ -4267,6 +4375,15 @@ | ||||
|       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/lower-case": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", | ||||
|       "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "tslib": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/lru-cache": { | ||||
|       "version": "5.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", | ||||
| @ -4322,12 +4439,13 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/micromatch": { | ||||
|       "version": "4.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", | ||||
|       "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", | ||||
|       "version": "4.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", | ||||
|       "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "braces": "^3.0.2", | ||||
|         "braces": "^3.0.3", | ||||
|         "picomatch": "^2.3.1" | ||||
|       }, | ||||
|       "engines": { | ||||
| @ -4391,6 +4509,16 @@ | ||||
|       "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/no-case": { | ||||
|       "version": "3.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", | ||||
|       "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "lower-case": "^2.0.2", | ||||
|         "tslib": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/node-fetch": { | ||||
|       "version": "2.7.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | ||||
| @ -4466,7 +4594,6 @@ | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||
|       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "wrappy": "1" | ||||
|       } | ||||
| @ -4572,6 +4699,16 @@ | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/pascal-case": { | ||||
|       "version": "3.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", | ||||
|       "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "no-case": "^3.0.4", | ||||
|         "tslib": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/path-exists": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", | ||||
| @ -4585,7 +4722,6 @@ | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | ||||
|       "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
| @ -4605,6 +4741,12 @@ | ||||
|       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/path-to-regexp": { | ||||
|       "version": "6.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", | ||||
|       "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", | ||||
|       "license": "MIT" | ||||
|     }, | ||||
|     "node_modules/path-type": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", | ||||
| @ -4718,7 +4860,6 @@ | ||||
|       "version": "2.8.8", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", | ||||
|       "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "prettier": "bin-prettier.js" | ||||
|       }, | ||||
| @ -5257,6 +5398,16 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ts-poet": { | ||||
|       "version": "4.15.0", | ||||
|       "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", | ||||
|       "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", | ||||
|       "license": "Apache-2.0", | ||||
|       "dependencies": { | ||||
|         "lodash": "^4.17.15", | ||||
|         "prettier": "^2.5.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/tslib": { | ||||
|       "version": "2.6.2", | ||||
|       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", | ||||
| @ -5291,6 +5442,35 @@ | ||||
|         "node": ">=0.6.11 <=0.7.0 || >=0.7.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/twirp-ts": { | ||||
|       "version": "2.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", | ||||
|       "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@protobuf-ts/plugin-framework": "^2.0.7", | ||||
|         "camel-case": "^4.1.2", | ||||
|         "dot-object": "^2.1.4", | ||||
|         "path-to-regexp": "^6.2.0", | ||||
|         "ts-poet": "^4.5.0", | ||||
|         "yaml": "^1.10.2" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@protobuf-ts/plugin": "^2.5.0", | ||||
|         "ts-proto": "^1.81.3" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "@protobuf-ts/plugin": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "ts-proto": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/type-check": { | ||||
|       "version": "0.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", | ||||
| @ -5338,9 +5518,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/undici": { | ||||
|       "version": "5.28.3", | ||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", | ||||
|       "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", | ||||
|       "version": "5.28.5", | ||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", | ||||
|       "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@fastify/busboy": "^2.0.0" | ||||
|       }, | ||||
| @ -5459,8 +5640,7 @@ | ||||
|     "node_modules/wrappy": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||
|       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" | ||||
|     }, | ||||
|     "node_modules/write-file-atomic": { | ||||
|       "version": "4.0.2", | ||||
| @ -5545,6 +5725,15 @@ | ||||
|       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/yaml": { | ||||
|       "version": "1.10.2", | ||||
|       "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", | ||||
|       "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", | ||||
|       "license": "ISC", | ||||
|       "engines": { | ||||
|         "node": ">= 6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/yargs": { | ||||
|       "version": "17.7.2", | ||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", | ||||
|  | ||||
| @ -26,18 +26,18 @@ | ||||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/cache": "^3.2.4", | ||||
|     "@actions/cache": "^4.0.0", | ||||
|     "@actions/core": "^1.10.0", | ||||
|     "@actions/exec": "^1.0.4", | ||||
|     "@actions/glob": "^0.4.0", | ||||
|     "@actions/http-client": "^2.2.1", | ||||
|     "@actions/http-client": "^2.2.3", | ||||
|     "@actions/io": "^1.0.2", | ||||
|     "@actions/tool-cache": "^2.0.1", | ||||
|     "semver": "^7.6.0", | ||||
|     "xmlbuilder2": "^2.4.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^29.5.12", | ||||
|     "@types/jest": "^29.5.14", | ||||
|     "@types/node": "^20.11.24", | ||||
|     "@types/semver": "^7.5.8", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|  | ||||
| @ -98,7 +98,7 @@ async function computeCacheKey( | ||||
|       `No file in ${process.cwd()} matched to [${pattern}], make sure you have checked out the target repository` | ||||
|     ); | ||||
|   } | ||||
|   return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${packageManager.id}-${fileHash}`; | ||||
|   return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-${packageManager.id}-${fileHash}`; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  | ||||
| @ -15,7 +15,8 @@ import { | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| 
 | ||||
| export enum AdoptImplementation { | ||||
| @ -73,11 +74,13 @@ export class AdoptDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
| 
 | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|  | ||||
| @ -5,7 +5,8 @@ import path from 'path'; | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   convertVersionToSemver | ||||
|   convertVersionToSemver, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import {JavaBase} from '../base-installer'; | ||||
| import { | ||||
| @ -29,14 +30,14 @@ export class CorrettoDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
| 
 | ||||
|     const extractedJavaPath = await extractJdkFile( | ||||
|       javaArchivePath, | ||||
|       getDownloadArchiveExtension() | ||||
|     ); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|     const archivePath = path.join(extractedJavaPath, archiveName); | ||||
| @ -93,7 +94,7 @@ export class CorrettoDistribution extends JavaBase { | ||||
|     const imageType = this.packageType; | ||||
| 
 | ||||
|     if (core.isDebug()) { | ||||
|       console.time('Retrieving available versions for Coretto took'); // eslint-disable-line no-console
 | ||||
|       console.time('Retrieving available versions for Corretto took'); // eslint-disable-line no-console
 | ||||
|     } | ||||
| 
 | ||||
|     const availableVersionsUrl = | ||||
| @ -116,7 +117,7 @@ export class CorrettoDistribution extends JavaBase { | ||||
| 
 | ||||
|     if (core.isDebug()) { | ||||
|       core.startGroup('Print information about available versions'); | ||||
|       console.timeEnd('Retrieving available versions for Coretto took'); // eslint-disable-line no-console
 | ||||
|       console.timeEnd('Retrieving available versions for Corretto took'); // eslint-disable-line no-console
 | ||||
|       core.debug(`Available versions: [${availableVersions.length}]`); | ||||
|       core.debug( | ||||
|         availableVersions | ||||
|  | ||||
| @ -10,6 +10,9 @@ import {SemeruDistribution} from './semeru/installer'; | ||||
| import {CorrettoDistribution} from './corretto/installer'; | ||||
| import {OracleDistribution} from './oracle/installer'; | ||||
| import {DragonwellDistribution} from './dragonwell/installer'; | ||||
| import {SapMachineDistribution} from './sapmachine/installer'; | ||||
| import {GraalVMDistribution} from './graalvm/installer'; | ||||
| import {JetBrainsDistribution} from './jetbrains/installer'; | ||||
| 
 | ||||
| enum JavaDistribution { | ||||
|   Adopt = 'adopt', | ||||
| @ -23,7 +26,10 @@ enum JavaDistribution { | ||||
|   Semeru = 'semeru', | ||||
|   Corretto = 'corretto', | ||||
|   Oracle = 'oracle', | ||||
|   Dragonwell = 'dragonwell' | ||||
|   Dragonwell = 'dragonwell', | ||||
|   SapMachine = 'sapmachine', | ||||
|   GraalVM = 'graalvm', | ||||
|   JetBrains = 'jetbrains' | ||||
| } | ||||
| 
 | ||||
| export function getJavaDistribution( | ||||
| @ -64,6 +70,12 @@ export function getJavaDistribution( | ||||
|       return new OracleDistribution(installerOptions); | ||||
|     case JavaDistribution.Dragonwell: | ||||
|       return new DragonwellDistribution(installerOptions); | ||||
|     case JavaDistribution.SapMachine: | ||||
|       return new SapMachineDistribution(installerOptions); | ||||
|     case JavaDistribution.GraalVM: | ||||
|       return new GraalVMDistribution(installerOptions); | ||||
|     case JavaDistribution.JetBrains: | ||||
|       return new JetBrainsDistribution(installerOptions); | ||||
|     default: | ||||
|       return null; | ||||
|   } | ||||
|  | ||||
| @ -11,7 +11,8 @@ import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   getGitHubHttpHeaders, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import {IDragonwellVersions, IDragonwellAllVersions} from './models'; | ||||
| import { | ||||
| @ -100,14 +101,14 @@ export class DragonwellDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
| 
 | ||||
|     const extractedJavaPath = await extractJdkFile( | ||||
|       javaArchivePath, | ||||
|       getDownloadArchiveExtension() | ||||
|     ); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|     const archivePath = path.join(extractedJavaPath, archiveName); | ||||
| @ -149,9 +150,14 @@ export class DragonwellDistribution extends JavaBase { | ||||
| 
 | ||||
|         // Some version of Dragonwell JDK are numerated with help of non-semver notation (more then 3 digits).
 | ||||
|         // Common practice is to transform excess digits to the so-called semver build part, which is prefixed with the plus sign, to be able to operate with them using semver tools.
 | ||||
|         if (jdkVersion.split('.').length > 3) { | ||||
|           jdkVersion = convertVersionToSemver(jdkVersion); | ||||
|         } | ||||
|         const jdkVersionNums: string[] = jdkVersion | ||||
|           .replace('+', '.') | ||||
|           .split('.'); | ||||
|         jdkVersion = convertVersionToSemver( | ||||
|           `${jdkVersionNums.slice(0, 3).join('.')}.${ | ||||
|             jdkVersionNums[jdkVersionNums.length - 1] | ||||
|           }` | ||||
|         ); | ||||
| 
 | ||||
|         for (const edition in archMap) { | ||||
|           eligibleVersions.push({ | ||||
|  | ||||
							
								
								
									
										176
									
								
								src/distributions/graalvm/installer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								src/distributions/graalvm/installer.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,176 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| 
 | ||||
| import fs from 'fs'; | ||||
| import path from 'path'; | ||||
| 
 | ||||
| import {JavaBase} from '../base-installer'; | ||||
| import { | ||||
|   JavaDownloadRelease, | ||||
|   JavaInstallerOptions, | ||||
|   JavaInstallerResults | ||||
| } from '../base-models'; | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   getGitHubHttpHeaders, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import {HttpCodes} from '@actions/http-client'; | ||||
| import {GraalVMEAVersion} from './models'; | ||||
| 
 | ||||
| const GRAALVM_DL_BASE = 'https://download.oracle.com/graalvm'; | ||||
| const IS_WINDOWS = process.platform === 'win32'; | ||||
| const GRAALVM_PLATFORM = IS_WINDOWS ? 'windows' : process.platform; | ||||
| 
 | ||||
| export class GraalVMDistribution extends JavaBase { | ||||
|   constructor(installerOptions: JavaInstallerOptions) { | ||||
|     super('GraalVM', installerOptions); | ||||
|   } | ||||
| 
 | ||||
|   protected async downloadTool( | ||||
|     javaRelease: JavaDownloadRelease | ||||
|   ): Promise<JavaInstallerResults> { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|     const archivePath = path.join(extractedJavaPath, archiveName); | ||||
|     const version = this.getToolcacheVersionName(javaRelease.version); | ||||
| 
 | ||||
|     const javaPath = await tc.cacheDir( | ||||
|       archivePath, | ||||
|       this.toolcacheFolderName, | ||||
|       version, | ||||
|       this.architecture | ||||
|     ); | ||||
| 
 | ||||
|     return {version: javaRelease.version, path: javaPath}; | ||||
|   } | ||||
| 
 | ||||
|   protected async findPackageForDownload( | ||||
|     range: string | ||||
|   ): Promise<JavaDownloadRelease> { | ||||
|     const arch = this.distributionArchitecture(); | ||||
|     if (arch !== 'x64' && arch !== 'aarch64') { | ||||
|       throw new Error(`Unsupported architecture: ${this.architecture}`); | ||||
|     } | ||||
| 
 | ||||
|     if (!this.stable) { | ||||
|       return this.findEABuildDownloadUrl(`${range}-ea`); | ||||
|     } | ||||
| 
 | ||||
|     if (this.packageType !== 'jdk') { | ||||
|       throw new Error('GraalVM provides only the `jdk` package type'); | ||||
|     } | ||||
| 
 | ||||
|     const platform = this.getPlatform(); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     let major; | ||||
|     let fileUrl; | ||||
|     if (range.includes('.')) { | ||||
|       major = range.split('.')[0]; | ||||
|       fileUrl = `${GRAALVM_DL_BASE}/${major}/archive/graalvm-jdk-${range}_${platform}-${arch}_bin.${extension}`; | ||||
|     } else { | ||||
|       major = range; | ||||
|       fileUrl = `${GRAALVM_DL_BASE}/${range}/latest/graalvm-jdk-${range}_${platform}-${arch}_bin.${extension}`; | ||||
|     } | ||||
| 
 | ||||
|     if (parseInt(major) < 17) { | ||||
|       throw new Error('GraalVM is only supported for JDK 17 and later'); | ||||
|     } | ||||
| 
 | ||||
|     const response = await this.http.head(fileUrl); | ||||
| 
 | ||||
|     if (response.message.statusCode === HttpCodes.NotFound) { | ||||
|       throw new Error(`Could not find GraalVM for SemVer ${range}`); | ||||
|     } | ||||
| 
 | ||||
|     if (response.message.statusCode !== HttpCodes.OK) { | ||||
|       throw new Error( | ||||
|         `Http request for GraalVM failed with status code: ${response.message.statusCode}` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     return {url: fileUrl, version: range}; | ||||
|   } | ||||
| 
 | ||||
|   private async findEABuildDownloadUrl( | ||||
|     javaEaVersion: string | ||||
|   ): Promise<JavaDownloadRelease> { | ||||
|     const versions = await this.fetchEAJson(javaEaVersion); | ||||
|     const latestVersion = versions.find(v => v.latest); | ||||
|     if (!latestVersion) { | ||||
|       throw new Error(`Unable to find latest version for '${javaEaVersion}'`); | ||||
|     } | ||||
|     const arch = this.distributionArchitecture(); | ||||
|     const file = latestVersion.files.find( | ||||
|       f => f.arch === arch && f.platform === GRAALVM_PLATFORM | ||||
|     ); | ||||
|     if (!file || !file.filename.startsWith('graalvm-jdk-')) { | ||||
|       throw new Error(`Unable to find file metadata for '${javaEaVersion}'`); | ||||
|     } | ||||
|     return { | ||||
|       url: `${latestVersion.download_base_url}${file.filename}`, | ||||
|       version: latestVersion.version | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
|   private async fetchEAJson( | ||||
|     javaEaVersion: string | ||||
|   ): Promise<GraalVMEAVersion[]> { | ||||
|     const owner = 'graalvm'; | ||||
|     const repository = 'oracle-graalvm-ea-builds'; | ||||
|     const branch = 'main'; | ||||
|     const filePath = `versions/${javaEaVersion}.json`; | ||||
| 
 | ||||
|     const url = `https://api.github.com/repos/${owner}/${repository}/contents/${filePath}?ref=${branch}`; | ||||
| 
 | ||||
|     const headers = getGitHubHttpHeaders(); | ||||
| 
 | ||||
|     core.debug( | ||||
|       `Trying to fetch available version info for GraalVM EA builds from '${url}'` | ||||
|     ); | ||||
|     let fetchedJson; | ||||
|     try { | ||||
|       fetchedJson = (await this.http.getJson<GraalVMEAVersion[]>(url, headers)) | ||||
|         .result; | ||||
|     } catch (err) { | ||||
|       throw Error( | ||||
|         `Fetching version info for GraalVM EA builds from '${url}' failed with the error: ${ | ||||
|           (err as Error).message | ||||
|         }` | ||||
|       ); | ||||
|     } | ||||
|     if (fetchedJson === null) { | ||||
|       throw Error( | ||||
|         `No GraalVM EA build found. Are you sure java-version: '${javaEaVersion}' is correct?` | ||||
|       ); | ||||
|     } | ||||
|     return fetchedJson; | ||||
|   } | ||||
| 
 | ||||
|   public getPlatform(platform: NodeJS.Platform = process.platform): OsVersions { | ||||
|     switch (platform) { | ||||
|       case 'darwin': | ||||
|         return 'macos'; | ||||
|       case 'win32': | ||||
|         return 'windows'; | ||||
|       case 'linux': | ||||
|         return 'linux'; | ||||
|       default: | ||||
|         throw new Error( | ||||
|           `Platform '${platform}' is not supported. Supported platforms: 'linux', 'macos', 'windows'` | ||||
|         ); | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										14
									
								
								src/distributions/graalvm/models.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/distributions/graalvm/models.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| export type OsVersions = 'linux' | 'macos' | 'windows'; | ||||
| 
 | ||||
| export interface GraalVMEAFile { | ||||
|   filename: string; | ||||
|   arch: 'aarch64' | 'x64'; | ||||
|   platform: 'darwin' | 'linux' | 'windows'; | ||||
| } | ||||
| 
 | ||||
| export interface GraalVMEAVersion { | ||||
|   version: string; | ||||
|   latest?: boolean; | ||||
|   download_base_url: string; | ||||
|   files: GraalVMEAFile[]; | ||||
| } | ||||
							
								
								
									
										233
									
								
								src/distributions/jetbrains/installer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								src/distributions/jetbrains/installer.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,233 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| 
 | ||||
| import fs from 'fs'; | ||||
| import path from 'path'; | ||||
| import semver from 'semver'; | ||||
| 
 | ||||
| import {JavaBase} from '../base-installer'; | ||||
| import {IJetBrainsRawVersion, IJetBrainsVersion} from './models'; | ||||
| import { | ||||
|   JavaDownloadRelease, | ||||
|   JavaInstallerOptions, | ||||
|   JavaInstallerResults | ||||
| } from '../base-models'; | ||||
| import {extractJdkFile, isVersionSatisfies} from '../../util'; | ||||
| import {OutgoingHttpHeaders} from 'http'; | ||||
| import {HttpCodes} from '@actions/http-client'; | ||||
| 
 | ||||
| export class JetBrainsDistribution extends JavaBase { | ||||
|   constructor(installerOptions: JavaInstallerOptions) { | ||||
|     super('JetBrains', installerOptions); | ||||
|   } | ||||
| 
 | ||||
|   protected async findPackageForDownload( | ||||
|     range: string | ||||
|   ): Promise<JavaDownloadRelease> { | ||||
|     const versionsRaw = await this.getAvailableVersions(); | ||||
| 
 | ||||
|     const versions = versionsRaw.map(v => { | ||||
|       const formattedVersion = `${v.semver}+${v.build}`; | ||||
| 
 | ||||
|       return { | ||||
|         version: formattedVersion, | ||||
|         url: v.url | ||||
|       } as JavaDownloadRelease; | ||||
|     }); | ||||
| 
 | ||||
|     const satisfiedVersions = versions | ||||
|       .filter(item => isVersionSatisfies(range, item.version)) | ||||
|       .sort((a, b) => { | ||||
|         return -semver.compareBuild(a.version, b.version); | ||||
|       }); | ||||
| 
 | ||||
|     const resolvedFullVersion = | ||||
|       satisfiedVersions.length > 0 ? satisfiedVersions[0] : null; | ||||
|     if (!resolvedFullVersion) { | ||||
|       const availableOptions = versionsRaw | ||||
|         .map(item => `${item.tag_name} (${item.semver}+${item.build})`) | ||||
|         .join(', '); | ||||
|       const availableOptionsMessage = availableOptions | ||||
|         ? `\nAvailable versions: ${availableOptions}` | ||||
|         : ''; | ||||
|       throw new Error( | ||||
|         `Could not find satisfied version for SemVer '${range}'. ${availableOptionsMessage}` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     return resolvedFullVersion; | ||||
|   } | ||||
| 
 | ||||
|   protected async downloadTool( | ||||
|     javaRelease: JavaDownloadRelease | ||||
|   ): Promise<JavaInstallerResults> { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
| 
 | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, 'tar.gz'); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|     const archivePath = path.join(extractedJavaPath, archiveName); | ||||
|     const version = this.getToolcacheVersionName(javaRelease.version); | ||||
| 
 | ||||
|     const javaPath = await tc.cacheDir( | ||||
|       archivePath, | ||||
|       this.toolcacheFolderName, | ||||
|       version, | ||||
|       this.architecture | ||||
|     ); | ||||
| 
 | ||||
|     return {version: javaRelease.version, path: javaPath}; | ||||
|   } | ||||
| 
 | ||||
|   private async getAvailableVersions(): Promise<IJetBrainsVersion[]> { | ||||
|     const platform = this.getPlatformOption(); | ||||
|     const arch = this.distributionArchitecture(); | ||||
| 
 | ||||
|     if (core.isDebug()) { | ||||
|       console.time('Retrieving available versions for JBR took'); // eslint-disable-line no-console
 | ||||
|     } | ||||
| 
 | ||||
|     // need to iterate through all pages to retrieve the list of all versions
 | ||||
|     // GitHub API doesn't provide way to retrieve the count of pages to iterate so infinity loop
 | ||||
|     let page_index = 1; | ||||
|     const rawVersions: IJetBrainsRawVersion[] = []; | ||||
|     const bearerToken = process.env.GITHUB_TOKEN; | ||||
| 
 | ||||
|     while (true) { | ||||
|       const requestArguments = `per_page=100&page=${page_index}`; | ||||
|       const requestHeaders: OutgoingHttpHeaders = {}; | ||||
| 
 | ||||
|       if (bearerToken) { | ||||
|         requestHeaders['Authorization'] = `Bearer ${bearerToken}`; | ||||
|       } | ||||
| 
 | ||||
|       const rawUrl = `https://api.github.com/repos/JetBrains/JetBrainsRuntime/releases?${requestArguments}`; | ||||
| 
 | ||||
|       if (core.isDebug() && page_index === 1) { | ||||
|         // url is identical except page_index so print it once for debug
 | ||||
|         core.debug(`Gathering available versions from '${rawUrl}'`); | ||||
|       } | ||||
| 
 | ||||
|       const paginationPage = ( | ||||
|         await this.http.getJson<IJetBrainsRawVersion[]>(rawUrl, requestHeaders) | ||||
|       ).result; | ||||
|       if (!paginationPage || paginationPage.length === 0) { | ||||
|         // break infinity loop because we have reached end of pagination
 | ||||
|         break; | ||||
|       } | ||||
| 
 | ||||
|       rawVersions.push(...paginationPage); | ||||
|       page_index++; | ||||
|     } | ||||
| 
 | ||||
|     // Add versions not available from the API but are downloadable
 | ||||
|     const hidden = ['11_0_10b1145.115', '11_0_11b1341.60']; | ||||
|     rawVersions.push(...hidden.map(tag => ({tag_name: tag, name: tag}))); | ||||
| 
 | ||||
|     const versions0 = rawVersions.map(async v => { | ||||
|       // Release tags look like one of these:
 | ||||
|       // jbr-release-21.0.3b465.3
 | ||||
|       // jbr17-b87.7
 | ||||
|       // jb11_0_11-b87.7
 | ||||
|       // jbr11_0_15b2043.56
 | ||||
|       // 11_0_11b1536.2
 | ||||
|       // 11_0_11-b1522
 | ||||
|       const tag = v.tag_name; | ||||
| 
 | ||||
|       // Extract version string
 | ||||
|       const vstring = tag | ||||
|         .replace('jbr-release-', '') | ||||
|         .replace('jbr', '') | ||||
|         .replace('jb', '') | ||||
|         .replace('-', ''); | ||||
| 
 | ||||
|       const vsplit = vstring.split('b'); | ||||
|       let semver = vsplit[0]; | ||||
|       const build = +vsplit[1]; | ||||
| 
 | ||||
|       // Normalize semver
 | ||||
|       if (!semver.includes('.') && !semver.includes('_')) | ||||
|         semver = `${semver}.0.0`; | ||||
| 
 | ||||
|       // Construct URL
 | ||||
|       let type: string; | ||||
|       switch (this.packageType ?? '') { | ||||
|         case 'jre': | ||||
|           type = 'jbr'; | ||||
|           break; | ||||
|         case 'jdk+jcef': | ||||
|           type = 'jbrsdk_jcef'; | ||||
|           break; | ||||
|         case 'jre+jcef': | ||||
|           type = 'jbr_jcef'; | ||||
|           break; | ||||
|         case 'jdk+ft': | ||||
|           type = 'jbrsdk_ft'; | ||||
|           break; | ||||
|         case 'jre+ft': | ||||
|           type = 'jbr_ft'; | ||||
|           break; | ||||
|         default: | ||||
|           type = 'jbrsdk'; | ||||
|           break; | ||||
|       } | ||||
| 
 | ||||
|       let url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}-${semver}-${platform}-${arch}-b${build}.tar.gz`; | ||||
|       let include = false; | ||||
| 
 | ||||
|       const res = await this.http.head(url); | ||||
|       if (res.message.statusCode === HttpCodes.OK) { | ||||
|         include = true; | ||||
|       } else { | ||||
|         url = `https://cache-redirector.jetbrains.com/intellij-jbr/${type}_nomod-${semver}-${platform}-${arch}-b${build}.tar.gz`; | ||||
|         const res2 = await this.http.head(url); | ||||
|         if (res2.message.statusCode === HttpCodes.OK) { | ||||
|           include = true; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       const version = { | ||||
|         tag_name: tag, | ||||
|         semver: semver.replace(/_/g, '.'), | ||||
|         build: build, | ||||
|         url: url | ||||
|       } as IJetBrainsVersion; | ||||
| 
 | ||||
|       return { | ||||
|         item: version, | ||||
|         include: include | ||||
|       }; | ||||
|     }); | ||||
| 
 | ||||
|     const versions = await Promise.all(versions0).then(res => | ||||
|       res.filter(item => item.include).map(item => item.item) | ||||
|     ); | ||||
| 
 | ||||
|     if (core.isDebug()) { | ||||
|       core.startGroup('Print information about available versions'); | ||||
|       console.timeEnd('Retrieving available versions for JBR took'); // eslint-disable-line no-console
 | ||||
|       core.debug(`Available versions: [${versions.length}]`); | ||||
|       core.debug(versions.map(item => item.semver).join(', ')); | ||||
|       core.endGroup(); | ||||
|     } | ||||
| 
 | ||||
|     return versions; | ||||
|   } | ||||
| 
 | ||||
|   private getPlatformOption(): string { | ||||
|     // Jetbrains has own platform names so need to map them
 | ||||
|     switch (process.platform) { | ||||
|       case 'darwin': | ||||
|         return 'osx'; | ||||
|       case 'win32': | ||||
|         return 'windows'; | ||||
|       default: | ||||
|         return process.platform; | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										13
									
								
								src/distributions/jetbrains/models.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/distributions/jetbrains/models.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| // Raw Model from https://api.github.com/repos/JetBrains/JetBrainsRuntime/releases
 | ||||
| 
 | ||||
| export interface IJetBrainsRawVersion { | ||||
|   tag_name: string; | ||||
|   name: string; | ||||
| } | ||||
| 
 | ||||
| export interface IJetBrainsVersion { | ||||
|   tag_name: string; | ||||
|   semver: string; | ||||
|   build: number; | ||||
|   url: string; | ||||
| } | ||||
| @ -8,7 +8,8 @@ import semver from 'semver'; | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import * as core from '@actions/core'; | ||||
| import {ArchitectureOptions, LibericaVersion, OsVersions} from './models'; | ||||
| @ -35,13 +36,8 @@ export class LibericaDistributions extends JavaBase { | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if ( | ||||
|       process.platform === 'win32' && | ||||
|       (this.architecture === 'arm64' || this.architecture === 'aarch64') | ||||
|     ) { | ||||
|       const javaArchivePathRenamed = `${javaArchivePath}.zip`; | ||||
|       await fs.renameSync(javaArchivePath, javaArchivePathRenamed); | ||||
|       javaArchivePath = javaArchivePathRenamed; | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,8 @@ import { | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   getGitHubHttpHeaders | ||||
|   getGitHubHttpHeaders, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| @ -27,22 +28,12 @@ export class MicrosoftDistributions extends JavaBase { | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     // Rename archive to add extension because after downloading
 | ||||
|     // archive does not contain extension type and it leads to some issues
 | ||||
|     // on Windows runners without PowerShell Core.
 | ||||
|     //
 | ||||
|     // For default PowerShell Windows it should contain extension type to unpack it.
 | ||||
|     if ( | ||||
|       process.platform === 'win32' && | ||||
|       (this.architecture === 'arm64' || this.architecture === 'aarch64') | ||||
|     ) { | ||||
|       const javaArchivePathRenamed = `${javaArchivePath}.zip`; | ||||
|       await fs.renameSync(javaArchivePath, javaArchivePathRenamed); | ||||
|       javaArchivePath = javaArchivePathRenamed; | ||||
|     } | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|  | ||||
| @ -10,7 +10,11 @@ import { | ||||
|   JavaInstallerOptions, | ||||
|   JavaInstallerResults | ||||
| } from '../base-models'; | ||||
| import {extractJdkFile, getDownloadArchiveExtension} from '../../util'; | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import {HttpCodes} from '@actions/http-client'; | ||||
| 
 | ||||
| const ORACLE_DL_BASE = 'https://download.oracle.com/java'; | ||||
| @ -26,11 +30,13 @@ export class OracleDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
| 
 | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|  | ||||
							
								
								
									
										269
									
								
								src/distributions/sapmachine/installer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								src/distributions/sapmachine/installer.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,269 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import semver from 'semver'; | ||||
| import fs from 'fs'; | ||||
| import {OutgoingHttpHeaders} from 'http'; | ||||
| import path from 'path'; | ||||
| import { | ||||
|   convertVersionToSemver, | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   getGitHubHttpHeaders, | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import {JavaBase} from '../base-installer'; | ||||
| import { | ||||
|   JavaDownloadRelease, | ||||
|   JavaInstallerOptions, | ||||
|   JavaInstallerResults | ||||
| } from '../base-models'; | ||||
| import {ISapMachineAllVersions, ISapMachineVersions} from './models'; | ||||
| 
 | ||||
| export class SapMachineDistribution extends JavaBase { | ||||
|   constructor(installerOptions: JavaInstallerOptions) { | ||||
|     super('SapMachine', installerOptions); | ||||
|   } | ||||
| 
 | ||||
|   protected async findPackageForDownload( | ||||
|     version: string | ||||
|   ): Promise<JavaDownloadRelease> { | ||||
|     core.debug(`Only stable versions: ${this.stable}`); | ||||
| 
 | ||||
|     if (!['jdk', 'jre'].includes(this.packageType)) { | ||||
|       throw new Error( | ||||
|         'SapMachine provides only the `jdk` and `jre` package type' | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     const availableVersions = await this.getAvailableVersions(); | ||||
| 
 | ||||
|     const matchedVersions = availableVersions | ||||
|       .filter(item => { | ||||
|         return isVersionSatisfies(version, item.version); | ||||
|       }) | ||||
|       .map(item => { | ||||
|         return { | ||||
|           version: item.version, | ||||
|           url: item.downloadLink | ||||
|         } as JavaDownloadRelease; | ||||
|       }); | ||||
| 
 | ||||
|     if (!matchedVersions.length) { | ||||
|       throw new Error( | ||||
|         `Couldn't find any satisfied version for the specified java-version: "${version}" and architecture: "${this.architecture}".` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     const resolvedVersion = matchedVersions[0]; | ||||
|     return resolvedVersion; | ||||
|   } | ||||
| 
 | ||||
|   private async getAvailableVersions(): Promise<ISapMachineVersions[]> { | ||||
|     const platform = this.getPlatformOption(); | ||||
|     const arch = this.distributionArchitecture(); | ||||
| 
 | ||||
|     let fetchedReleasesJson = await this.fetchReleasesFromUrl( | ||||
|       'https://sap.github.io/SapMachine/assets/data/sapmachine-releases-all.json' | ||||
|     ); | ||||
| 
 | ||||
|     if (!fetchedReleasesJson) { | ||||
|       fetchedReleasesJson = await this.fetchReleasesFromUrl( | ||||
|         'https://api.github.com/repos/SAP/SapMachine/contents/assets/data/sapmachine-releases-all.json?ref=gh-pages', | ||||
|         getGitHubHttpHeaders() | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     if (!fetchedReleasesJson) { | ||||
|       throw new Error( | ||||
|         `Couldn't fetch SapMachine versions information from both primary and backup urls` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     core.debug( | ||||
|       'Successfully fetched information about available SapMachine versions' | ||||
|     ); | ||||
| 
 | ||||
|     const availableVersions = this.parseVersions( | ||||
|       platform, | ||||
|       arch, | ||||
|       fetchedReleasesJson | ||||
|     ); | ||||
| 
 | ||||
|     if (core.isDebug()) { | ||||
|       core.startGroup('Print information about available versions'); | ||||
|       core.debug(availableVersions.map(item => item.version).join(', ')); | ||||
|       core.endGroup(); | ||||
|     } | ||||
| 
 | ||||
|     return availableVersions; | ||||
|   } | ||||
| 
 | ||||
|   protected async downloadTool( | ||||
|     javaRelease: JavaDownloadRelease | ||||
|   ): Promise<JavaInstallerResults> { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|     const archivePath = path.join(extractedJavaPath, archiveName); | ||||
|     const version = this.getToolcacheVersionName(javaRelease.version); | ||||
| 
 | ||||
|     const javaPath = await tc.cacheDir( | ||||
|       archivePath, | ||||
|       this.toolcacheFolderName, | ||||
|       version, | ||||
|       this.architecture | ||||
|     ); | ||||
| 
 | ||||
|     return {version: javaRelease.version, path: javaPath}; | ||||
|   } | ||||
| 
 | ||||
|   private parseVersions( | ||||
|     platform: string, | ||||
|     arch: string, | ||||
|     versions: ISapMachineAllVersions | ||||
|   ): ISapMachineVersions[] { | ||||
|     const eligibleVersions: ISapMachineVersions[] = []; | ||||
| 
 | ||||
|     for (const [, majorVersionMap] of Object.entries(versions)) { | ||||
|       for (const [, jdkVersionMap] of Object.entries(majorVersionMap.updates)) { | ||||
|         for (const [buildVersion, buildVersionMap] of Object.entries( | ||||
|           jdkVersionMap | ||||
|         )) { | ||||
|           let buildVersionWithoutPrefix = buildVersion.replace( | ||||
|             'sapmachine-', | ||||
|             '' | ||||
|           ); | ||||
|           if (!buildVersionWithoutPrefix.includes('.')) { | ||||
|             // replace major version with major.minor.patch and keep the remaining build identifier after the + as is with regex
 | ||||
|             buildVersionWithoutPrefix = buildVersionWithoutPrefix.replace( | ||||
|               /(\d+)(\+.*)?/, | ||||
|               '$1.0.0$2' | ||||
|             ); | ||||
|           } | ||||
|           // replace + with . to convert to semver format if we have more than 3 version digits
 | ||||
|           if (buildVersionWithoutPrefix.split('.').length > 3) { | ||||
|             buildVersionWithoutPrefix = buildVersionWithoutPrefix.replace( | ||||
|               '+', | ||||
|               '.' | ||||
|             ); | ||||
|           } | ||||
|           buildVersionWithoutPrefix = convertVersionToSemver( | ||||
|             buildVersionWithoutPrefix | ||||
|           ); | ||||
| 
 | ||||
|           // ignore invalid version
 | ||||
|           if (!semver.valid(buildVersionWithoutPrefix)) { | ||||
|             core.debug(`Invalid version: ${buildVersionWithoutPrefix}`); | ||||
|             continue; | ||||
|           } | ||||
| 
 | ||||
|           // skip earlyAccessVersions if stable version requested
 | ||||
|           if (this.stable && buildVersionMap.ea === 'true') { | ||||
|             continue; | ||||
|           } | ||||
| 
 | ||||
|           for (const [edition, editionAssets] of Object.entries( | ||||
|             buildVersionMap.assets | ||||
|           )) { | ||||
|             if (this.packageType !== edition) { | ||||
|               continue; | ||||
|             } | ||||
|             for (const [archAndPlatForm, archAssets] of Object.entries( | ||||
|               editionAssets | ||||
|             )) { | ||||
|               let expectedArchAndPlatform = `${platform}-${arch}`; | ||||
|               if (platform === 'linux-musl') { | ||||
|                 expectedArchAndPlatform = `linux-${arch}-musl`; | ||||
|               } | ||||
|               if (archAndPlatForm !== expectedArchAndPlatform) { | ||||
|                 continue; | ||||
|               } | ||||
|               for (const [contentType, contentTypeAssets] of Object.entries( | ||||
|                 archAssets | ||||
|               )) { | ||||
|                 // skip if not tar.gz and zip files
 | ||||
|                 if (contentType !== 'tar.gz' && contentType !== 'zip') { | ||||
|                   continue; | ||||
|                 } | ||||
|                 eligibleVersions.push({ | ||||
|                   os: platform, | ||||
|                   architecture: arch, | ||||
|                   version: buildVersionWithoutPrefix, | ||||
|                   checksum: contentTypeAssets.checksum, | ||||
|                   downloadLink: contentTypeAssets.url, | ||||
|                   packageType: edition | ||||
|                 }); | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     const sortedVersions = this.sortParsedVersions(eligibleVersions); | ||||
| 
 | ||||
|     return sortedVersions; | ||||
|   } | ||||
| 
 | ||||
|   // Sorts versions in descending order as by default data in JSON isn't sorted
 | ||||
|   private sortParsedVersions( | ||||
|     eligibleVersions: ISapMachineVersions[] | ||||
|   ): ISapMachineVersions[] { | ||||
|     const sortedVersions = eligibleVersions.sort((versionObj1, versionObj2) => { | ||||
|       const version1 = versionObj1.version; | ||||
|       const version2 = versionObj2.version; | ||||
|       return semver.compareBuild(version1, version2); | ||||
|     }); | ||||
|     return sortedVersions.reverse(); | ||||
|   } | ||||
| 
 | ||||
|   private getPlatformOption(): string { | ||||
|     switch (process.platform) { | ||||
|       case 'win32': | ||||
|         return 'windows'; | ||||
|       case 'darwin': | ||||
|         return 'macos'; | ||||
|       case 'linux': | ||||
|         // figure out if alpine/musl
 | ||||
|         if (fs.existsSync('/etc/alpine-release')) { | ||||
|           return 'linux-musl'; | ||||
|         } | ||||
|         return 'linux'; | ||||
|       default: | ||||
|         return process.platform; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   private async fetchReleasesFromUrl( | ||||
|     url: string, | ||||
|     headers: OutgoingHttpHeaders = {} | ||||
|   ): Promise<ISapMachineAllVersions | null> { | ||||
|     try { | ||||
|       core.debug( | ||||
|         `Trying to fetch available SapMachine versions info from the primary url: ${url}` | ||||
|       ); | ||||
|       const releases = ( | ||||
|         await this.http.getJson<ISapMachineAllVersions>(url, headers) | ||||
|       ).result; | ||||
|       return releases; | ||||
|     } catch (err) { | ||||
|       core.debug( | ||||
|         `Fetching SapMachine versions info from the link: ${url} ended up with the error: ${ | ||||
|           (err as Error).message | ||||
|         }` | ||||
|       ); | ||||
|       return null; | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										33
									
								
								src/distributions/sapmachine/models.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/distributions/sapmachine/models.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| export interface ISapMachineAllVersions { | ||||
|   [major: string]: { | ||||
|     lts: string; | ||||
|     updates: { | ||||
|       [full_version: string]: { | ||||
|         [sapmachineBuild: string]: { | ||||
|           release_url: string; | ||||
|           ea: string; | ||||
|           assets: { | ||||
|             [packageType: string]: { | ||||
|               [arch: string]: { | ||||
|                 [content_type: string]: { | ||||
|                   name: string; | ||||
|                   checksum: string; | ||||
|                   url: string; | ||||
|                 }; | ||||
|               }; | ||||
|             }; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| export interface ISapMachineVersions { | ||||
|   os: string; | ||||
|   architecture: string; | ||||
|   version: string; | ||||
|   checksum: string; | ||||
|   downloadLink: string; | ||||
|   packageType: string; | ||||
| } | ||||
| @ -8,7 +8,8 @@ import semver from 'semver'; | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| @ -33,11 +34,15 @@ export class SemeruDistribution extends JavaBase { | ||||
|   protected async findPackageForDownload( | ||||
|     version: string | ||||
|   ): Promise<JavaDownloadRelease> { | ||||
|     if (!supportedArchitectures.includes(this.architecture)) { | ||||
|     const arch = this.distributionArchitecture(); | ||||
| 
 | ||||
|     if (!supportedArchitectures.includes(arch)) { | ||||
|       throw new Error( | ||||
|         `Unsupported architecture for IBM Semeru: ${ | ||||
|           this.architecture | ||||
|         }, the following are supported: ${supportedArchitectures.join(', ')}` | ||||
|         } for your current OS version, the following are supported: ${supportedArchitectures.join( | ||||
|           ', ' | ||||
|         )}` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
| @ -81,7 +86,7 @@ export class SemeruDistribution extends JavaBase { | ||||
|         ? `\nAvailable versions: ${availableOptions}` | ||||
|         : ''; | ||||
|       throw new Error( | ||||
|         `Could not find satisfied version for SemVer '${version}'. ${availableOptionsMessage}` | ||||
|         `Could not find satisfied version for SemVer version '${version}' for your current OS version for ${this.architecture} architecture ${availableOptionsMessage}` | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
| @ -94,11 +99,13 @@ export class SemeruDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
| 
 | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath: string = await extractJdkFile( | ||||
|       javaArchivePath, | ||||
|       extension | ||||
| @ -124,7 +131,7 @@ export class SemeruDistribution extends JavaBase { | ||||
| 
 | ||||
|   public async getAvailableVersions(): Promise<ISemeruAvailableVersions[]> { | ||||
|     const platform = this.getPlatformOption(); | ||||
|     const arch = this.architecture; | ||||
|     const arch = this.distributionArchitecture(); | ||||
|     const imageType = this.packageType; | ||||
|     const versionRange = encodeURI('[1.0,100.0]'); // retrieve all available versions
 | ||||
|     const releaseType = this.stable ? 'ga' : 'ea'; | ||||
|  | ||||
| @ -15,7 +15,8 @@ import { | ||||
| import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| 
 | ||||
| export enum TemurinImplementation { | ||||
| @ -76,11 +77,13 @@ export class TemurinDistribution extends JavaBase { | ||||
|     core.info( | ||||
|       `Downloading Java ${javaRelease.version} (${this.distribution}) from ${javaRelease.url} ...` | ||||
|     ); | ||||
|     const javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
|     let javaArchivePath = await tc.downloadTool(javaRelease.url); | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
| 
 | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|     const archiveName = fs.readdirSync(extractedJavaPath)[0]; | ||||
|  | ||||
| @ -11,7 +11,8 @@ import { | ||||
|   extractJdkFile, | ||||
|   getDownloadArchiveExtension, | ||||
|   convertVersionToSemver, | ||||
|   isVersionSatisfies | ||||
|   isVersionSatisfies, | ||||
|   renameWinArchive | ||||
| } from '../../util'; | ||||
| import { | ||||
|   JavaDownloadRelease, | ||||
| @ -80,13 +81,8 @@ export class ZuluDistribution extends JavaBase { | ||||
| 
 | ||||
|     core.info(`Extracting Java archive...`); | ||||
|     const extension = getDownloadArchiveExtension(); | ||||
|     if ( | ||||
|       process.platform === 'win32' && | ||||
|       (this.architecture === 'arm64' || this.architecture === 'aarch64') | ||||
|     ) { | ||||
|       const javaArchivePathRenamed = `${javaArchivePath}.zip`; | ||||
|       await fs.renameSync(javaArchivePath, javaArchivePathRenamed); | ||||
|       javaArchivePath = javaArchivePathRenamed; | ||||
|     if (process.platform === 'win32') { | ||||
|       javaArchivePath = renameWinArchive(javaArchivePath); | ||||
|     } | ||||
|     const extractedJavaPath = await extractJdkFile(javaArchivePath, extension); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										19
									
								
								src/util.ts
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/util.ts
									
									
									
									
									
								
							| @ -92,7 +92,13 @@ export function isGhes(): boolean { | ||||
|   const ghUrl = new URL( | ||||
|     process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||
|   ); | ||||
|   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||
| 
 | ||||
|   const hostname = ghUrl.hostname.trimEnd().toUpperCase(); | ||||
|   const isGitHubHost = hostname === 'GITHUB.COM'; | ||||
|   const isGitHubEnterpriseCloudHost = hostname.endsWith('.GHE.COM'); | ||||
|   const isLocalHost = hostname.endsWith('.LOCALHOST'); | ||||
| 
 | ||||
|   return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost; | ||||
| } | ||||
| 
 | ||||
| export function isCacheFeatureAvailable(): boolean { | ||||
| @ -190,3 +196,14 @@ export function getGitHubHttpHeaders(): OutgoingHttpHeaders { | ||||
|   } | ||||
|   return headers; | ||||
| } | ||||
| 
 | ||||
| // Rename archive to add extension because after downloading
 | ||||
| // archive does not contain extension type and it leads to some issues
 | ||||
| // on Windows runners without PowerShell Core.
 | ||||
| //
 | ||||
| // For default PowerShell Windows it should contain extension type to unpack it.
 | ||||
| export function renameWinArchive(javaArchivePath: string): string { | ||||
|   const javaArchivePathRenamed = `${javaArchivePath}.zip`; | ||||
|   fs.renameSync(javaArchivePath, javaArchivePathRenamed); | ||||
|   return javaArchivePathRenamed; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user