setup-go/src/cache-utils.ts

59 lines
1.4 KiB
TypeScript
Raw Normal View History

import * as exec from '@actions/exec';
type SupportedPackageManagers = {
[prop: string]: PackageManagerInfo;
};
export interface PackageManagerInfo {
dependencyFilePattern: string;
getCacheFolderCommand: string;
}
export const supportedPackageManagers: SupportedPackageManagers = {
default: {
dependencyFilePattern: 'go.sum',
getCacheFolderCommand: 'go env GOMODCACHE'
}
};
export const getCommandOutput = async (toolCommand: string) => {
let {stdout, stderr, exitCode} = await exec.getExecOutput(
toolCommand,
undefined,
{ignoreReturnCode: true}
);
if (exitCode) {
stderr = !stderr.trim()
? `The '${toolCommand}' command failed with exit code: ${exitCode}`
: stderr;
throw new Error(stderr);
}
return stdout.trim();
};
export const getPackageManagerInfo = async (packageManager: string) => {
if (!supportedPackageManagers.packageManager) {
throw new Error(
`It's not possible to use ${packageManager}, please, check correctness of the package manager name spelling.`
);
}
return supportedPackageManagers.packageManager;
};
export const getCacheDirectoryPath = async (
packageManagerInfo: PackageManagerInfo
) => {
const stdout = await getCommandOutput(
packageManagerInfo.getCacheFolderCommand
);
if (!stdout) {
throw new Error(`Could not get cache folder path.`);
}
return stdout;
};