setup-go/src/main.ts
francisco souza 25c870be4d
Add $GOBIN
- Set $GOBIN to $(go env GOPATH)/bin
- Add $GOBIN to the PATH

Should make the setup of tools like golangci-lint or golint work with a
simple `go get`.

Using $GOBIN instead of $GOPATH/bin because the goal is to have GOPATH
not being directly referenced. Also, in the future, GOBIN will have a
default value too, so we would not need to manually set it, just add it
to the path (see discussion in golang/go#23439).

Closes #14.
2020-03-01 21:18:28 -05:00

55 lines
1.7 KiB
TypeScript

import * as core from '@actions/core';
import * as tc from '@actions/tool-cache';
import * as installer from './installer';
import * as path from 'path';
import * as gobin from './gobin';
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');
// stable will be true unless false is the exact input
// since getting unstable versions should be explicit
let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
console.log(
`Setup go ${stable ? 'stable' : ''} version spec ${versionSpec}`
);
if (versionSpec) {
let installDir: string | undefined = tc.find('go', versionSpec);
if (!installDir) {
console.log(
`A version satisfying ${versionSpec} not found locally, attempting to download ...`
);
installDir = await installer.downloadGo(versionSpec, stable);
console.log('Installed');
}
if (installDir) {
core.exportVariable('GOROOT', installDir);
core.addPath(path.join(installDir, 'bin'));
console.log('Added go to the path');
const gobinDir = await gobin.getGOBIN(installDir);
core.exportVariable('GOBIN', gobinDir);
core.addPath(gobinDir);
} else {
throw new Error(
`Could not find a version that satisfied version spec: ${versionSpec}`
);
}
}
// add problem matchers
const matchersPath = path.join(__dirname, '..', 'matchers.json');
console.log(`##[add-matcher]${matchersPath}`);
} catch (error) {
core.setFailed(error.message);
}
}