2020-02-09 00:21:39 -05:00
|
|
|
import * as core from '@actions/core';
|
|
|
|
import * as tc from '@actions/tool-cache';
|
|
|
|
import * as installer from './installer';
|
|
|
|
import * as path from 'path';
|
|
|
|
|
|
|
|
export async function run() {
|
|
|
|
try {
|
|
|
|
//
|
|
|
|
// versionSpec is optional. If supplied, install / use from the tool cache
|
|
|
|
// If not supplied then problem matchers will still be setup. Useful for self-hosted.
|
|
|
|
//
|
|
|
|
let versionSpec = core.getInput('go-version');
|
2020-02-09 00:29:21 -05:00
|
|
|
let stable: boolean =
|
|
|
|
(core.getInput('stable') || '').toUpperCase() == 'TRUE';
|
2020-02-09 00:21:39 -05:00
|
|
|
|
|
|
|
if (versionSpec) {
|
2020-02-09 00:29:21 -05:00
|
|
|
let installDir: string | undefined = tc.find('go', versionSpec);
|
2020-02-09 00:21:39 -05:00
|
|
|
|
2020-02-09 00:29:21 -05:00
|
|
|
if (!installDir) {
|
|
|
|
installDir = await installer.downloadGo(versionSpec, stable);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (installDir) {
|
|
|
|
core.exportVariable('GOROOT', installDir);
|
|
|
|
core.addPath(path.join(installDir, 'bin'));
|
|
|
|
} else {
|
|
|
|
throw new Error(
|
|
|
|
`Could not find a version that satisfied version spec: ${versionSpec}`
|
|
|
|
);
|
|
|
|
}
|
2020-02-09 00:21:39 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// add problem matchers
|
|
|
|
const matchersPath = path.join(__dirname, '..', 'matchers.json');
|
|
|
|
console.log(`##[add-matcher]${matchersPath}`);
|
|
|
|
} catch (error) {
|
|
|
|
core.setFailed(error.message);
|
|
|
|
}
|
2020-02-09 00:29:21 -05:00
|
|
|
}
|