Some checks failed
Tests / build (macOS-latest) (push) Has been cancelled
Tests / build (ubuntu-latest) (push) Has been cancelled
Check dist/ / Check dist/ (push) Has been cancelled
Code scanning - action / CodeQL-Build (push) Has been cancelled
Licensed / Licensed (push) Has been cancelled
Tests / build (windows-latest) (push) Has been cancelled
Tests / test-save (macOS-latest) (push) Has been cancelled
Tests / test-save (ubuntu-latest) (push) Has been cancelled
Tests / test-save (windows-latest) (push) Has been cancelled
Tests / test-restore (macOS-latest) (push) Has been cancelled
Tests / test-restore (ubuntu-latest) (push) Has been cancelled
Tests / test-restore (windows-latest) (push) Has been cancelled
Tests / test-proxy-save (push) Has been cancelled
Tests / test-proxy-restore (push) Has been cancelled
Close inactive issues / close-issues (push) Has been cancelled
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import * as core from "@actions/core";
|
|
|
|
import { Outputs, State } from "./constants";
|
|
|
|
export interface IStateProvider {
|
|
setState(key: string, value: string): void;
|
|
getState(key: string): string;
|
|
|
|
getCacheState(): string | undefined;
|
|
}
|
|
|
|
class StateProviderBase implements IStateProvider {
|
|
getCacheState(): string | undefined {
|
|
const cacheKey = this.getState(State.CacheMatchedKey);
|
|
if (cacheKey) {
|
|
core.debug(`Cache state/key: ${cacheKey}`);
|
|
return cacheKey;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
|
|
setState = (key: string, value: string) => {};
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
getState = (key: string) => "";
|
|
}
|
|
|
|
export class StateProvider extends StateProviderBase {
|
|
setState = core.saveState;
|
|
getState = core.getState;
|
|
}
|
|
|
|
export class NullStateProvider extends StateProviderBase {
|
|
stateToOutputMap = new Map<string, string>([
|
|
[State.CacheMatchedKey, Outputs.CacheMatchedKey],
|
|
[State.CachePrimaryKey, Outputs.CachePrimaryKey]
|
|
]);
|
|
|
|
setState = (key: string, value: string) => {
|
|
core.setOutput(this.stateToOutputMap.get(key) as string, value);
|
|
};
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
getState = (key: string) => "";
|
|
}
|