mirror of
https://github.com/julia-actions/setup-julia.git
synced 2026-02-21 07:26:54 +08:00
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import * as core from '@actions/core'
|
|
import * as exec from '@actions/exec'
|
|
import * as tc from '@actions/tool-cache'
|
|
|
|
import * as path from 'path'
|
|
|
|
import * as installer from './installer'
|
|
import * as jlcache from './caching'
|
|
|
|
async function run() {
|
|
try {
|
|
const versionInput = core.getInput('version')
|
|
const arch = core.getInput('arch')
|
|
const availableReleases = installer.juliaVersions
|
|
const version = await installer.getJuliaVersion(availableReleases, versionInput)
|
|
core.debug(`selected Julia version: ${arch}/${version}`)
|
|
|
|
// Search in cache
|
|
let juliaPath: string;
|
|
juliaPath = tc.find('julia', version, arch)
|
|
|
|
if (!juliaPath) {
|
|
core.debug(`could not find Julia ${version} in cache`)
|
|
const juliaInstallationPath = await installer.installJulia(version, arch);
|
|
|
|
// Add it to cache
|
|
juliaPath = await tc.cacheDir(juliaInstallationPath, 'julia', version, arch)
|
|
core.debug(`added Julia to cache: ${juliaPath}`)
|
|
} else {
|
|
core.debug(`using cached version of Julia: ${juliaPath}`)
|
|
}
|
|
|
|
// Add it to PATH
|
|
core.addPath(path.join(juliaPath, 'bin'))
|
|
|
|
// Test if Julia has been installed
|
|
exec.exec('julia', ['--version'])
|
|
|
|
// If enabled, also show the full version info
|
|
if (core.getInput('show-versioninfo') == 'true') {
|
|
exec.exec('julia', ['-e', 'using InteractiveUtils; versioninfo()'])
|
|
}
|
|
|
|
// Create caches
|
|
if (core.getInput('cache-artifacts') == 'true') {
|
|
core.debug('caching artifacts directory...')
|
|
const cacheId = await jlcache.cacheArtifacts()
|
|
core.setOutput('artifacts-cache-id', cacheId.toString())
|
|
}
|
|
} catch (error) {
|
|
core.setFailed(error.message)
|
|
}
|
|
}
|
|
|
|
run()
|