2022-01-03 08:52:11 +01:00
|
|
|
import * as c from './constants'
|
2022-03-01 10:50:00 +01:00
|
|
|
import {
|
|
|
|
downloadAndExtractJDK,
|
|
|
|
downloadExtractAndCacheJDK,
|
|
|
|
getLatestRelease
|
|
|
|
} from './utils'
|
2022-01-03 08:52:11 +01:00
|
|
|
|
|
|
|
const GRAALVM_CE_DL_BASE =
|
|
|
|
'https://github.com/graalvm/graalvm-ce-builds/releases/download'
|
2022-01-03 13:11:04 +01:00
|
|
|
const GRAALVM_REPO_DEV_BUILDS = 'graalvm-ce-dev-builds'
|
2022-01-03 08:52:11 +01:00
|
|
|
const GRAALVM_REPO_RELEASES = 'graalvm-ce-builds'
|
|
|
|
const GRAALVM_TAG_PREFIX = 'vm-'
|
|
|
|
|
|
|
|
export async function setUpGraalVMLatest(javaVersion: string): Promise<string> {
|
|
|
|
const latestRelease = await getLatestRelease(GRAALVM_REPO_RELEASES)
|
|
|
|
const tag_name = latestRelease.tag_name
|
|
|
|
if (tag_name.startsWith(GRAALVM_TAG_PREFIX)) {
|
|
|
|
const latestVersion = tag_name.substring(
|
|
|
|
GRAALVM_TAG_PREFIX.length,
|
|
|
|
tag_name.length
|
|
|
|
)
|
|
|
|
return setUpGraalVMRelease(latestVersion, javaVersion)
|
|
|
|
}
|
|
|
|
throw new Error(`Could not find latest GraalVM release: ${tag_name}`)
|
|
|
|
}
|
|
|
|
|
2022-01-03 13:11:04 +01:00
|
|
|
export async function setUpGraalVMDevBuild(
|
2022-01-03 08:52:11 +01:00
|
|
|
javaVersion: string
|
|
|
|
): Promise<string> {
|
2022-01-03 13:11:04 +01:00
|
|
|
const latestDevBuild = await getLatestRelease(GRAALVM_REPO_DEV_BUILDS)
|
2022-01-03 08:52:11 +01:00
|
|
|
const graalVMIdentifier = determineGraalVMIdentifier('dev', javaVersion)
|
|
|
|
const expectedFileName = `${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}`
|
2022-01-03 13:11:04 +01:00
|
|
|
for (const asset of latestDevBuild.assets) {
|
2022-01-03 08:52:11 +01:00
|
|
|
if (asset.name === expectedFileName) {
|
|
|
|
return downloadAndExtractJDK(asset.browser_download_url)
|
|
|
|
}
|
|
|
|
}
|
2022-01-03 13:11:04 +01:00
|
|
|
throw new Error('Could not find GraalVM dev build')
|
2022-01-03 08:52:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export async function setUpGraalVMRelease(
|
|
|
|
version: string,
|
|
|
|
javaVersion: string
|
|
|
|
): Promise<string> {
|
|
|
|
const graalVMIdentifier = determineGraalVMIdentifier(version, javaVersion)
|
|
|
|
const downloadUrl = `${GRAALVM_CE_DL_BASE}/${GRAALVM_TAG_PREFIX}${version}/${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}`
|
2022-03-01 10:50:00 +01:00
|
|
|
const toolName = determineToolName(javaVersion)
|
|
|
|
return downloadExtractAndCacheJDK(downloadUrl, toolName, version)
|
2022-01-03 08:52:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function determineGraalVMIdentifier(
|
|
|
|
version: string,
|
|
|
|
javaVersion: string
|
|
|
|
): string {
|
|
|
|
return `graalvm-ce-java${javaVersion}-${c.GRAALVM_PLATFORM}-amd64-${version}`
|
|
|
|
}
|
2022-03-01 10:50:00 +01:00
|
|
|
|
|
|
|
function determineToolName(javaVersion: string): string {
|
|
|
|
return `graalvm-ce-java${javaVersion}-${c.GRAALVM_PLATFORM}`
|
|
|
|
}
|