mirror of https://github.com/actions/setup-go.git
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.pull/41/head
parent
2096a2c66a
commit
25c870be4d
@ -0,0 +1,21 @@
|
|||||||
|
import * as gobin from '../src/gobin';
|
||||||
|
|
||||||
|
jest.mock('child_process');
|
||||||
|
|
||||||
|
describe('gobin', () => {
|
||||||
|
const childProcess = require('child_process');
|
||||||
|
|
||||||
|
let execSpy: jest.SpyInstance;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
execSpy = jest.spyOn(childProcess, 'exec');
|
||||||
|
execSpy.mockImplementation((_command, callback) => {
|
||||||
|
callback('', {stdout: '/home/user/go', stderr: ''});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return ${GOPATH}/bin', async () => {
|
||||||
|
const gobinPath = await gobin.getGOBIN('...');
|
||||||
|
expect(gobinPath).toBe('/home/user/go/bin');
|
||||||
|
});
|
||||||
|
});
|
@ -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');
|
||||||
|
}
|
Loading…
Reference in New Issue