setup-graalvm/src/main.ts

78 lines
2.4 KiB
TypeScript
Raw Normal View History

import * as c from './constants'
2022-01-03 08:43:40 +01:00
import * as core from '@actions/core'
import * as graalvm from './graalvm'
import {join} from 'path'
import {mkdirP} from '@actions/io'
2022-01-03 08:54:37 +01:00
import {setUpDependencies} from './dependencies'
2022-01-03 08:57:03 +01:00
import {setUpGUComponents} from './gu'
import {setUpGraalVMTrunk} from './graalvm-trunk'
2022-01-03 09:00:36 +01:00
import {setUpMandrel} from './mandrel'
import {setUpWindowsEnvironment} from './msvc'
2022-01-03 08:43:40 +01:00
async function run(): Promise<void> {
try {
const graalvmVersion: string = core.getInput('version', {required: true})
const javaVersion: string = core.getInput('java-version', {required: true})
const componentsString: string = core.getInput('components')
const components: string[] =
componentsString.length > 0 ? componentsString.split(',') : []
const setJavaHome = core.getInput('set-java-home') === 'true'
if (c.IS_WINDOWS) {
setUpWindowsEnvironment()
}
2022-01-03 08:54:37 +01:00
setUpDependencies(components)
await mkdirP(c.GRAALVM_BASE)
// Download or build GraalVM
2022-01-03 08:43:40 +01:00
let graalVMHome
switch (graalvmVersion) {
case c.VERSION_LATEST:
graalVMHome = await graalvm.setUpGraalVMLatest(javaVersion)
break
2022-01-03 13:11:04 +01:00
case c.VERSION_DEV:
graalVMHome = await graalvm.setUpGraalVMDevBuild(javaVersion)
break
case c.VERSION_TRUNK:
graalVMHome = await setUpGraalVMTrunk(javaVersion, components)
break
default:
2022-01-03 09:00:36 +01:00
if (graalvmVersion.startsWith(c.MANDREL_NAMESPACE)) {
graalVMHome = await setUpMandrel(graalvmVersion, javaVersion)
} else {
graalVMHome = await graalvm.setUpGraalVMRelease(
graalvmVersion,
javaVersion
)
}
break
}
// Activate GraalVM
core.debug(`Activating GraalVM located at '${graalVMHome}'...`)
2022-01-03 08:43:40 +01:00
core.exportVariable('GRAALVM_HOME', graalVMHome)
core.addPath(join(graalVMHome, 'bin'))
if (setJavaHome) {
core.exportVariable('JAVA_HOME', graalVMHome)
}
2022-01-03 08:57:03 +01:00
// Set up GraalVM components (if any)
if (components.length > 0) {
if (graalvmVersion === c.VERSION_TRUNK) {
// components built from source, nothing to do
2022-01-03 09:00:36 +01:00
} else if (graalvmVersion.startsWith(c.MANDREL_NAMESPACE)) {
core.warning(
`Mandrel does not support GraalVM components: ${componentsString}`
)
2022-01-03 08:57:03 +01:00
} else {
await setUpGUComponents(graalVMHome, components)
}
}
2022-01-03 08:43:40 +01:00
} catch (error) {
if (error instanceof Error) core.setFailed(error.message)
}
}
run()