mirror of
https://github.com/actions/setup-go
synced 2024-12-22 14:22:41 +00:00
prefer globally installed bin
This commit is contained in:
parent
9c31f591e9
commit
3d0e3826ed
3 changed files with 46 additions and 33 deletions
39
dist/index.js
vendored
39
dist/index.js
vendored
|
@ -1279,6 +1279,8 @@ const core = __importStar(__webpack_require__(470));
|
||||||
const tc = __importStar(__webpack_require__(533));
|
const tc = __importStar(__webpack_require__(533));
|
||||||
const installer = __importStar(__webpack_require__(749));
|
const installer = __importStar(__webpack_require__(749));
|
||||||
const path = __importStar(__webpack_require__(622));
|
const path = __importStar(__webpack_require__(622));
|
||||||
|
const cp = __importStar(__webpack_require__(129));
|
||||||
|
const fs = __importStar(__webpack_require__(747));
|
||||||
function run() {
|
function run() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
|
@ -1291,6 +1293,8 @@ function run() {
|
||||||
// since getting unstable versions should be explicit
|
// since getting unstable versions should be explicit
|
||||||
let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
|
let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
|
||||||
console.log(`Setup go ${stable ? 'stable' : ''} version spec ${versionSpec}`);
|
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) {
|
if (versionSpec) {
|
||||||
let installDir = tc.find('go', versionSpec);
|
let installDir = tc.find('go', versionSpec);
|
||||||
if (!installDir) {
|
if (!installDir) {
|
||||||
|
@ -1302,6 +1306,11 @@ function run() {
|
||||||
core.exportVariable('GOROOT', installDir);
|
core.exportVariable('GOROOT', installDir);
|
||||||
core.addPath(path.join(installDir, 'bin'));
|
core.addPath(path.join(installDir, 'bin'));
|
||||||
console.log('Added go to the path');
|
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 {
|
else {
|
||||||
throw new Error(`Could not find a version that satisfied version spec: ${versionSpec}`);
|
throw new Error(`Could not find a version that satisfied version spec: ${versionSpec}`);
|
||||||
|
@ -1317,6 +1326,19 @@ function run() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.run = 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 });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const tc = __importStar(__webpack_require__(533));
|
const tc = __importStar(__webpack_require__(533));
|
||||||
const cm = __importStar(__webpack_require__(470));
|
|
||||||
const path = __importStar(__webpack_require__(622));
|
const path = __importStar(__webpack_require__(622));
|
||||||
const semver = __importStar(__webpack_require__(280));
|
const semver = __importStar(__webpack_require__(280));
|
||||||
const httpm = __importStar(__webpack_require__(539));
|
const httpm = __importStar(__webpack_require__(539));
|
||||||
const sys = __importStar(__webpack_require__(737));
|
const sys = __importStar(__webpack_require__(737));
|
||||||
const core_1 = __webpack_require__(470);
|
const core_1 = __webpack_require__(470);
|
||||||
const cp = __importStar(__webpack_require__(129));
|
|
||||||
const fs = __importStar(__webpack_require__(747));
|
|
||||||
function downloadGo(versionSpec, stable) {
|
function downloadGo(versionSpec, stable) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
let toolPath;
|
let toolPath;
|
||||||
|
@ -4605,7 +4624,6 @@ function downloadGo(versionSpec, stable) {
|
||||||
// extracts with a root folder that matches the fileName downloaded
|
// extracts with a root folder that matches the fileName downloaded
|
||||||
const toolRoot = path.join(extPath, 'go');
|
const toolRoot = path.join(extPath, 'go');
|
||||||
toolPath = yield tc.cacheDir(toolRoot, 'go', makeSemver(match.version));
|
toolPath = yield tc.cacheDir(toolRoot, 'go', makeSemver(match.version));
|
||||||
addBinToPath();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
@ -4615,19 +4633,6 @@ function downloadGo(versionSpec, stable) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.downloadGo = downloadGo;
|
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) {
|
function findMatch(versionSpec, stable) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
let archFilter = sys.getArch();
|
let archFilter = sys.getArch();
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
import * as tc from '@actions/tool-cache';
|
import * as tc from '@actions/tool-cache';
|
||||||
import * as cm from '@actions/core';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as semver from 'semver';
|
import * as semver from 'semver';
|
||||||
import * as httpm from '@actions/http-client';
|
import * as httpm from '@actions/http-client';
|
||||||
import * as sys from './system';
|
import * as sys from './system';
|
||||||
import {debug} from '@actions/core';
|
import {debug} from '@actions/core';
|
||||||
import * as cp from 'child_process';
|
|
||||||
import * as fs from 'fs';
|
|
||||||
|
|
||||||
export async function downloadGo(
|
export async function downloadGo(
|
||||||
versionSpec: string,
|
versionSpec: string,
|
||||||
|
@ -37,8 +34,6 @@ export async function downloadGo(
|
||||||
// extracts with a root folder that matches the fileName downloaded
|
// extracts with a root folder that matches the fileName downloaded
|
||||||
const toolRoot = path.join(extPath, 'go');
|
const toolRoot = path.join(extPath, 'go');
|
||||||
toolPath = await tc.cacheDir(toolRoot, 'go', makeSemver(match.version));
|
toolPath = await tc.cacheDir(toolRoot, 'go', makeSemver(match.version));
|
||||||
|
|
||||||
addBinToPath();
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(`Failed to download version ${versionSpec}: ${error}`);
|
throw new Error(`Failed to download version ${versionSpec}: ${error}`);
|
||||||
|
@ -60,17 +55,6 @@ export interface IGoVersion {
|
||||||
files: IGoVersionFile[];
|
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(
|
export async function findMatch(
|
||||||
versionSpec: string,
|
versionSpec: string,
|
||||||
stable: boolean
|
stable: boolean
|
||||||
|
|
24
src/main.ts
24
src/main.ts
|
@ -2,6 +2,8 @@ import * as core from '@actions/core';
|
||||||
import * as tc from '@actions/tool-cache';
|
import * as tc from '@actions/tool-cache';
|
||||||
import * as installer from './installer';
|
import * as installer from './installer';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
import * as cp from 'child_process';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
|
||||||
export async function run() {
|
export async function run() {
|
||||||
try {
|
try {
|
||||||
|
@ -19,6 +21,8 @@ export async function run() {
|
||||||
`Setup go ${stable ? 'stable' : ''} version spec ${versionSpec}`
|
`Setup go ${stable ? 'stable' : ''} version spec ${versionSpec}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// if there's a globally install go and bin path, prefer that
|
||||||
|
let addedBin = addBinToPath();
|
||||||
if (versionSpec) {
|
if (versionSpec) {
|
||||||
let installDir: string | undefined = tc.find('go', versionSpec);
|
let installDir: string | undefined = tc.find('go', versionSpec);
|
||||||
|
|
||||||
|
@ -34,6 +38,12 @@ export async function run() {
|
||||||
core.exportVariable('GOROOT', installDir);
|
core.exportVariable('GOROOT', installDir);
|
||||||
core.addPath(path.join(installDir, 'bin'));
|
core.addPath(path.join(installDir, 'bin'));
|
||||||
console.log('Added go to the path');
|
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 {
|
} else {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Could not find a version that satisfied version spec: ${versionSpec}`
|
`Could not find a version that satisfied version spec: ${versionSpec}`
|
||||||
|
@ -48,3 +58,17 @@ export async function run() {
|
||||||
core.setFailed(error.message);
|
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;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue