mirror of
https://github.com/actions/setup-go.git
synced 2025-06-18 23:02:59 -06:00
Add JSON output of go env
and some env as strings
Additional outputs are: - GOPATH as `go-path` string - GOMOD as `go-mod` string - GOCACHE as `go-cache` string - GOMODCACHE as `go-mod-cache` string - `go env` as `go-env` JSON
This commit is contained in:
parent
c4c1141886
commit
18710d65d4
5 changed files with 112 additions and 12 deletions
34
src/main.ts
34
src/main.ts
|
@ -63,13 +63,23 @@ export async function run() {
|
|||
|
||||
const goPath = await io.which('go');
|
||||
const goVersion = (cp.execSync(`${goPath} version`) || '').toString();
|
||||
const goEnv = (cp.execSync(`${goPath} env`) || '').toString();
|
||||
const goEnvJson = JSON.parse(convertEnvStringToJson(goEnv));
|
||||
const parsedGoVersion = parseGoVersion(goVersion);
|
||||
|
||||
// Go versions less that 1.16 do not have the GOVERSION environment variable
|
||||
if (semver.lt(parsedGoVersion, '1.16.0')) {
|
||||
goEnvJson['GOVERSION'] = 'go' + parsedGoVersion;
|
||||
}
|
||||
|
||||
core.info(goVersion);
|
||||
|
||||
if (cache && isCacheFeatureAvailable()) {
|
||||
const packageManager = 'default';
|
||||
const cacheDependencyPath = core.getInput('cache-dependency-path');
|
||||
try {
|
||||
await restoreCache(
|
||||
parseGoVersion(goVersion),
|
||||
parsedGoVersion,
|
||||
packageManager,
|
||||
cacheDependencyPath
|
||||
);
|
||||
|
@ -82,13 +92,13 @@ export async function run() {
|
|||
const matchersPath = path.join(__dirname, '../..', 'matchers.json');
|
||||
core.info(`##[add-matcher]${matchersPath}`);
|
||||
|
||||
// output the version actually being used
|
||||
core.info(goVersion);
|
||||
|
||||
core.setOutput('go-version', parseGoVersion(goVersion));
|
||||
core.setOutput('go-version', parsedGoVersion);
|
||||
core.setOutput('go-path', goEnvJson['GOPATH']);
|
||||
core.setOutput('go-cache', goEnvJson['GOCACHE']);
|
||||
core.setOutput('go-mod-cache', goEnvJson['GOMODCACHE']);
|
||||
core.setOutput('go-env', goEnvJson);
|
||||
|
||||
core.startGroup('go env');
|
||||
const goEnv = (cp.execSync(`${goPath} env`) || '').toString();
|
||||
core.info(goEnv);
|
||||
core.endGroup();
|
||||
} catch (error) {
|
||||
|
@ -135,6 +145,18 @@ export function parseGoVersion(versionString: string): string {
|
|||
return versionString.split(' ')[2].slice('go'.length);
|
||||
}
|
||||
|
||||
export function convertEnvStringToJson(envString: string): string {
|
||||
const envArray = envString.split('\n');
|
||||
const envObject: {[key: string]: string} = {};
|
||||
|
||||
envArray.forEach(envVar => {
|
||||
const [key, value] = envVar.split(/=(?=")/);
|
||||
envObject[key] = value?.replace(/"/g, '');
|
||||
});
|
||||
|
||||
return JSON.stringify(envObject);
|
||||
}
|
||||
|
||||
function resolveVersionInput(): string {
|
||||
let version = core.getInput('go-version');
|
||||
const versionFilePath = core.getInput('go-version-file');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue