From e7c72b564b68d879864b00bbf4b3ad448d7d9a9b Mon Sep 17 00:00:00 2001 From: Gil Tene Date: Sat, 2 Nov 2019 17:47:44 -0700 Subject: [PATCH] Add optional java-package parameter --- lib/installer.js | 25 +++++++++++++++++++------ lib/setup-java.js | 3 ++- src/installer.ts | 25 +++++++++++++++++++------ src/setup-java.ts | 3 ++- 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/lib/installer.js b/lib/installer.js index 09c352b5..4ab1f24a 100644 --- a/lib/installer.js +++ b/lib/installer.js @@ -41,9 +41,9 @@ if (!tempDirectory) { } tempDirectory = path.join(baseLocation, 'actions', 'temp'); } -function getJava(version, arch, jdkFile) { +function getJava(version, arch, jdkFile, javaPackage) { return __awaiter(this, void 0, void 0, function* () { - let toolPath = tc.find('Java', version); + let toolPath = tc.find(javaPackage, version); if (toolPath) { core.debug(`Tool found in cache ${toolPath}`); } @@ -54,7 +54,7 @@ function getJava(version, arch, jdkFile) { let http = new httpm.HttpClient('setup-java'); let contents = yield (yield http.get('https://static.azul.com/zulu/bin/')).readBody(); let refs = contents.match(//gi) || []; - const downloadInfo = getDownloadInfo(refs, version); + const downloadInfo = getDownloadInfo(refs, version, javaPackage); jdkFile = yield tc.downloadTool(downloadInfo.url); version = downloadInfo.version; compressedFileExtension = IS_WINDOWS ? '.zip' : '.tar.gz'; @@ -66,7 +66,7 @@ function getJava(version, arch, jdkFile) { let tempDir = path.join(tempDirectory, 'temp_' + Math.floor(Math.random() * 2000000000)); const jdkDir = yield unzipJavaDownload(jdkFile, compressedFileExtension, tempDir); core.debug(`jdk extracted to ${jdkDir}`); - toolPath = yield tc.cacheDir(jdkDir, 'Java', getCacheVersionString(version), arch); + toolPath = yield tc.cacheDir(jdkDir, javaPackage, getCacheVersionString(version), arch); } let extendedJavaHome = 'JAVA_HOME_' + version + '_' + arch; core.exportVariable('JAVA_HOME', toolPath); @@ -162,7 +162,7 @@ function unzipJavaDownload(repoRoot, fileEnding, destinationFolder, extension) { } }); } -function getDownloadInfo(refs, version) { +function getDownloadInfo(refs, version, javaPackage) { version = normalizeVersion(version); let extension = ''; if (IS_WINDOWS) { @@ -176,6 +176,19 @@ function getDownloadInfo(refs, version) { extension = `-linux_x64.tar.gz`; } } + let pkgRegexp = new RegExp(''); + if (javaPackage === 'jdk') { + pkgRegexp = /jdk.*-/gi; + } + else if (javaPackage == 'jre') { + pkgRegexp = /jre.*-/gi; + } + else if (javaPackage == 'jdk+fx') { + pkgRegexp = /fx-jdk.*-/gi; + } + else { + throw new Error(`package argument ${javaPackage} is not in [jdk | jre | jdk+fx]`); + } // Maps version to url let versionMap = new Map(); // Filter by platform @@ -184,7 +197,7 @@ function getDownloadInfo(refs, version) { return; } // If we haven't returned, means we're looking at the correct platform - let versions = ref.match(/jdk.*-/gi) || []; + let versions = ref.match(pkgRegexp) || []; if (versions.length > 1) { throw new Error(`Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}`); } diff --git a/lib/setup-java.js b/lib/setup-java.js index 05e231cb..cff28bb8 100644 --- a/lib/setup-java.js +++ b/lib/setup-java.js @@ -27,7 +27,8 @@ function run() { } const arch = core.getInput('architecture', { required: true }); const jdkFile = core.getInput('jdkFile', { required: false }) || ''; - yield installer.getJava(version, arch, jdkFile); + const javaPackage = core.getInput('java-package', { required: false }) || 'jdk'; + yield installer.getJava(version, arch, jdkFile, javaPackage); const matchersPath = path.join(__dirname, '..', '.github'); console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`); } diff --git a/src/installer.ts b/src/installer.ts index c0a37d3f..8e5a239f 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -29,9 +29,10 @@ if (!tempDirectory) { export async function getJava( version: string, arch: string, - jdkFile: string + jdkFile: string, + javaPackage: string ): Promise { - let toolPath = tc.find('Java', version); + let toolPath = tc.find(javaPackage, version); if (toolPath) { core.debug(`Tool found in cache ${toolPath}`); @@ -45,7 +46,7 @@ export async function getJava( )).readBody(); let refs = contents.match(//gi) || []; - const downloadInfo = getDownloadInfo(refs, version); + const downloadInfo = getDownloadInfo(refs, version, javaPackage); jdkFile = await tc.downloadTool(downloadInfo.url); version = downloadInfo.version; @@ -66,7 +67,7 @@ export async function getJava( core.debug(`jdk extracted to ${jdkDir}`); toolPath = await tc.cacheDir( jdkDir, - 'Java', + javaPackage, getCacheVersionString(version), arch ); @@ -173,7 +174,8 @@ async function unzipJavaDownload( function getDownloadInfo( refs: string[], - version: string + version: string, + javaPackage: string ): {version: string; url: string} { version = normalizeVersion(version); let extension = ''; @@ -187,6 +189,17 @@ function getDownloadInfo( } } + let pkgRegexp = new RegExp(''); + if (javaPackage === 'jdk') { + pkgRegexp = /jdk.*-/gi; + } else if (javaPackage == 'jre') { + pkgRegexp = /jre.*-/gi; + } else if (javaPackage == 'jdk+fx') { + pkgRegexp = /fx-jdk.*-/gi; + } else { + throw new Error(`package argument ${javaPackage} is not in [jdk | jre | jdk+fx]`); + } + // Maps version to url let versionMap = new Map(); @@ -197,7 +210,7 @@ function getDownloadInfo( } // If we haven't returned, means we're looking at the correct platform - let versions = ref.match(/jdk.*-/gi) || []; + let versions = ref.match(pkgRegexp) || []; if (versions.length > 1) { throw new Error( `Invalid ref received from https://static.azul.com/zulu/bin/: ${ref}` diff --git a/src/setup-java.ts b/src/setup-java.ts index c5f84ba2..698cc9a4 100644 --- a/src/setup-java.ts +++ b/src/setup-java.ts @@ -10,8 +10,9 @@ async function run() { } const arch = core.getInput('architecture', {required: true}); const jdkFile = core.getInput('jdkFile', {required: false}) || ''; + const javaPackage = core.getInput('java-package', {required: false}) || 'jdk'; - await installer.getJava(version, arch, jdkFile); + await installer.getJava(version, arch, jdkFile, javaPackage); const matchersPath = path.join(__dirname, '..', '.github'); console.log(`##[add-matcher]${path.join(matchersPath, 'java.json')}`);