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