Download from zulu

This commit is contained in:
Danny McCormick 2019-07-15 13:40:27 -04:00
parent 012e07621e
commit d04dab381d
2 changed files with 70 additions and 4 deletions

View File

@ -22,6 +22,7 @@ const exec = __importStar(require("@actions/exec"));
const tc = __importStar(require("@actions/tool-cache"));
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const httpm = __importStar(require("typed-rest-client/HttpClient"));
const IS_WINDOWS = process.platform === 'win32';
if (!tempDirectory) {
let baseLocation;
@ -47,7 +48,8 @@ function getJava(version, arch, jdkFile) {
}
else {
if (!jdkFile) {
throw new Error(`Failed to find Java ${version} in the cache. Please specify a valid jdk file to install from instead.`);
const downloadUrl = yield getDownloadUrl(version);
jdkFile = yield tc.downloadTool(downloadUrl);
}
core.debug('Retrieving Jdk from local path');
const compressedFileExtension = getFileEnding(jdkFile);
@ -143,3 +145,32 @@ function unzipJavaDownload(repoRoot, fileEnding, destinationFolder) {
}
});
}
function getDownloadUrl(version) {
return __awaiter(this, void 0, void 0, function* () {
let filterString = '';
if (IS_WINDOWS) {
filterString = `jdk${version}-win_x64.zip`;
}
else {
if (process.platform === 'darwin') {
filterString = `jdk${version}-macosx_x64.tar.gz`;
}
else {
filterString = `jdk${version}-linux_x64.tar.gz`;
}
}
let http = new httpm.HttpClient('setup-java');
let contents = yield (yield http.get('https://static.azul.com/zulu/bin/')).readBody();
let refs = contents.match(/<a href.*\">/gi) || [];
refs = refs.filter(val => {
if (val.indexOf(filterString) > -1) {
return true;
}
});
if (refs.length == 0) {
throw new Error(`No valid download found for version ${version}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`);
}
const downloadLocation = refs[0].slice('<a href="'.length, refs[0].length - '">'.length);
return `https://static.azul.com/zulu/bin/${downloadLocation}`;
});
}

View File

@ -6,6 +6,7 @@ import * as exec from '@actions/exec';
import * as tc from '@actions/tool-cache';
import * as fs from 'fs';
import * as path from 'path';
import * as httpm from 'typed-rest-client/HttpClient';
const IS_WINDOWS = process.platform === 'win32';
@ -35,9 +36,8 @@ export async function getJava(
core.debug(`Tool found in cache ${toolPath}`);
} else {
if (!jdkFile) {
throw new Error(
`Failed to find Java ${version} in the cache. Please specify a valid jdk file to install from instead.`
);
const downloadUrl: string = await getDownloadUrl(version);
jdkFile = await tc.downloadTool(downloadUrl);
}
core.debug('Retrieving Jdk from local path');
const compressedFileExtension = getFileEnding(jdkFile);
@ -143,3 +143,38 @@ async function unzipJavaDownload(
throw new Error(`Jdk argument ${jdkFile} is not a file`);
}
}
async function getDownloadUrl(version: string) {
let filterString = '';
if (IS_WINDOWS) {
filterString = `jdk${version}-win_x64.zip`;
} else {
if (process.platform === 'darwin') {
filterString = `jdk${version}-macosx_x64.tar.gz`;
} else {
filterString = `jdk${version}-linux_x64.tar.gz`;
}
}
let http: httpm.HttpClient = new httpm.HttpClient('setup-java');
let contents = await (await http.get(
'https://static.azul.com/zulu/bin/'
)).readBody();
let refs = contents.match(/<a href.*\">/gi) || [];
refs = refs.filter(val => {
if (val.indexOf(filterString) > -1) {
return true;
}
});
if (refs.length == 0) {
throw new Error(
`No valid download found for version ${version}. Check https://static.azul.com/zulu/bin/ for a list of valid versions or download your own jdk file and add the jdkFile argument`
);
}
const downloadLocation = refs[0].slice(
'<a href="'.length,
refs[0].length - '">'.length
);
return `https://static.azul.com/zulu/bin/${downloadLocation}`;
}