From 3d0e3826edeac5757c93466b31e54fc1c909e2eb Mon Sep 17 00:00:00 2001 From: Bryan MacFarlane Date: Thu, 26 Mar 2020 12:02:52 -0400 Subject: [PATCH] prefer globally installed bin --- dist/index.js | 39 ++++++++++++++++++++++----------------- src/installer.ts | 16 ---------------- src/main.ts | 24 ++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/dist/index.js b/dist/index.js index afbb4d6..1de8d7b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1279,6 +1279,8 @@ const core = __importStar(__webpack_require__(470)); const tc = __importStar(__webpack_require__(533)); const installer = __importStar(__webpack_require__(749)); const path = __importStar(__webpack_require__(622)); +const cp = __importStar(__webpack_require__(129)); +const fs = __importStar(__webpack_require__(747)); function run() { return __awaiter(this, void 0, void 0, function* () { try { @@ -1291,6 +1293,8 @@ function run() { // 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 there's a globally install go and bin path, prefer that + let addedBin = addBinToPath(); if (versionSpec) { let installDir = tc.find('go', versionSpec); if (!installDir) { @@ -1302,6 +1306,11 @@ function run() { core.exportVariable('GOROOT', installDir); core.addPath(path.join(installDir, 'bin')); console.log('Added go to the path'); + // if the global installed bin wasn't added, + // we can add the bin just installed + if (!addBinToPath) { + addBinToPath(); + } } else { throw new Error(`Could not find a version that satisfied version spec: ${versionSpec}`); @@ -1317,6 +1326,19 @@ function run() { }); } exports.run = run; +function addBinToPath() { + let added = false; + let buf = cp.execSync('go env GOPATH'); + if (buf) { + let d = buf.toString().trim(); + let bp = path.join(d, 'bin'); + if (fs.existsSync(bp)) { + core.addPath(bp); + added = true; + } + } + return added; +} /***/ }), @@ -4576,14 +4598,11 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const tc = __importStar(__webpack_require__(533)); -const cm = __importStar(__webpack_require__(470)); const path = __importStar(__webpack_require__(622)); const semver = __importStar(__webpack_require__(280)); const httpm = __importStar(__webpack_require__(539)); const sys = __importStar(__webpack_require__(737)); const core_1 = __webpack_require__(470); -const cp = __importStar(__webpack_require__(129)); -const fs = __importStar(__webpack_require__(747)); function downloadGo(versionSpec, stable) { return __awaiter(this, void 0, void 0, function* () { let toolPath; @@ -4605,7 +4624,6 @@ function downloadGo(versionSpec, stable) { // extracts with a root folder that matches the fileName downloaded const toolRoot = path.join(extPath, 'go'); toolPath = yield tc.cacheDir(toolRoot, 'go', makeSemver(match.version)); - addBinToPath(); } } catch (error) { @@ -4615,19 +4633,6 @@ function downloadGo(versionSpec, stable) { }); } exports.downloadGo = downloadGo; -function addBinToPath() { - return __awaiter(this, void 0, void 0, function* () { - let buf = cp.execSync('go env GOPATH'); - if (buf) { - let d = buf.toString().trim(); - let bp = path.join(d, 'bin'); - if (fs.existsSync(bp)) { - cm.addPath(bp); - } - } - }); -} -exports.addBinToPath = addBinToPath; function findMatch(versionSpec, stable) { return __awaiter(this, void 0, void 0, function* () { let archFilter = sys.getArch(); diff --git a/src/installer.ts b/src/installer.ts index 69c1e1f..eb54706 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -1,12 +1,9 @@ import * as tc from '@actions/tool-cache'; -import * as cm from '@actions/core'; import * as path from 'path'; import * as semver from 'semver'; import * as httpm from '@actions/http-client'; import * as sys from './system'; import {debug} from '@actions/core'; -import * as cp from 'child_process'; -import * as fs from 'fs'; export async function downloadGo( versionSpec: string, @@ -37,8 +34,6 @@ export async function downloadGo( // extracts with a root folder that matches the fileName downloaded const toolRoot = path.join(extPath, 'go'); toolPath = await tc.cacheDir(toolRoot, 'go', makeSemver(match.version)); - - addBinToPath(); } } catch (error) { throw new Error(`Failed to download version ${versionSpec}: ${error}`); @@ -60,17 +55,6 @@ export interface IGoVersion { files: IGoVersionFile[]; } -export async function addBinToPath() { - let buf = cp.execSync('go env GOPATH'); - if (buf) { - let d = buf.toString().trim(); - let bp = path.join(d, 'bin'); - if (fs.existsSync(bp)) { - cm.addPath(bp); - } - } -} - export async function findMatch( versionSpec: string, stable: boolean diff --git a/src/main.ts b/src/main.ts index 132be9b..e78788b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,6 +2,8 @@ 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 cp from 'child_process'; +import * as fs from 'fs'; export async function run() { try { @@ -19,6 +21,8 @@ export async function run() { `Setup go ${stable ? 'stable' : ''} version spec ${versionSpec}` ); + // if there's a globally install go and bin path, prefer that + let addedBin = addBinToPath(); if (versionSpec) { let installDir: string | undefined = tc.find('go', versionSpec); @@ -34,6 +38,12 @@ export async function run() { core.exportVariable('GOROOT', installDir); core.addPath(path.join(installDir, 'bin')); console.log('Added go to the path'); + + // if the global installed bin wasn't added, + // we can add the bin just installed + if (!addBinToPath) { + addBinToPath(); + } } else { throw new Error( `Could not find a version that satisfied version spec: ${versionSpec}` @@ -48,3 +58,17 @@ export async function run() { core.setFailed(error.message); } } + +function addBinToPath(): boolean { + let added = false; + let buf = cp.execSync('go env GOPATH'); + if (buf) { + let d = buf.toString().trim(); + let bp = path.join(d, 'bin'); + if (fs.existsSync(bp)) { + core.addPath(bp); + added = true; + } + } + return added; +}