cache/src/utils/actionUtils.ts

77 lines
2.1 KiB
TypeScript
Raw Normal View History

2019-10-30 18:48:49 +00:00
import * as core from "@actions/core";
import { Outputs, RefKey, State } from "../constants";
2019-10-30 18:48:49 +00:00
2020-09-29 14:58:32 +00:00
export function isGhes(): boolean {
const ghUrl = new URL(
process.env["GITHUB_SERVER_URL"] || "https://github.com"
);
return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
}
export function isExactKeyMatch(key: string, cacheKey?: string): boolean {
2019-10-30 18:48:49 +00:00
return !!(
cacheKey &&
cacheKey.localeCompare(key, undefined, {
2019-10-30 18:48:49 +00:00
sensitivity: "accent"
}) === 0
);
}
export function setCacheState(state: string): void {
core.saveState(State.CacheMatchedKey, state);
2019-11-12 21:48:02 +00:00
}
export function setCacheHitOutput(isCacheHit: boolean): void {
core.setOutput(Outputs.CacheHit, isCacheHit.toString());
}
export function setOutputAndState(key: string, cacheKey?: string): void {
setCacheHitOutput(isExactKeyMatch(key, cacheKey));
// Store the matched cache key if it exists
cacheKey && setCacheState(cacheKey);
2019-10-30 18:48:49 +00:00
}
export function getCacheState(): string | undefined {
const cacheKey = core.getState(State.CacheMatchedKey);
if (cacheKey) {
core.debug(`Cache state/key: ${cacheKey}`);
return cacheKey;
}
return undefined;
2019-10-30 18:48:49 +00:00
}
export function logWarning(message: string): void {
const warningPrefix = "[warning]";
core.info(`${warningPrefix}${message}`);
}
2020-04-17 19:46:46 +00:00
// Cache token authorized for all events that are tied to a ref
// See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
export function isValidEvent(): boolean {
2020-04-20 17:44:37 +00:00
return RefKey in process.env && Boolean(process.env[RefKey]);
}
2020-06-02 15:21:03 +00:00
export function getInputAsArray(
name: string,
options?: core.InputOptions
): string[] {
return core
.getInput(name, options)
.split("\n")
.map(s => s.trim())
.filter(x => x !== "");
}
2020-10-02 14:59:55 +00:00
export function getInputAsInt(
name: string,
options?: core.InputOptions
): number | undefined {
const value = parseInt(core.getInput(name, options));
if (isNaN(value) || value < 0) {
2020-10-02 14:59:55 +00:00
return undefined;
}
return value;
}