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.
This commit is contained in:
francisco souza 2020-03-01 21:18:28 -05:00
parent 2096a2c66a
commit 25c870be4d
No known key found for this signature in database
GPG key ID: 3F6AA3B701F20B3E
5 changed files with 106 additions and 17 deletions

13
src/gobin.ts Normal file
View file

@ -0,0 +1,13 @@
import * as childProcess from 'child_process';
import * as path from 'path';
import {promisify} from 'util';
const exec = promisify(childProcess.exec);
export async function getGOBIN(installDir: string): Promise<string> {
const goExecutable = path.join(installDir, 'bin', 'go');
const result = await exec(`${goExecutable} env GOPATH`);
const gopath = result.stdout;
return path.join(gopath, 'bin');
}

View file

@ -2,6 +2,7 @@ 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 {
@ -34,6 +35,10 @@ export async function run() {
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}`