setup-uv/src/save-cache.ts

54 lines
1.3 KiB
TypeScript
Raw Normal View History

import * as cache from "@actions/cache";
import * as core from "@actions/core";
import * as exec from "@actions/exec";
import {
STATE_CACHE_MATCHED_KEY,
STATE_CACHE_KEY,
} from "./cache/restore-cache";
import { cacheLocalPath, enableCache } from "./utils/inputs";
2024-08-23 23:58:26 +02:00
export async function run(): Promise<void> {
try {
if (enableCache) {
await saveCache();
2024-08-23 23:58:26 +02:00
}
} catch (error) {
const err = error as Error;
core.setFailed(err.message);
2024-08-23 23:58:26 +02:00
}
process.exit(0);
2024-08-23 23:58:26 +02:00
}
async function saveCache(): Promise<void> {
const cacheKey = core.getState(STATE_CACHE_KEY);
const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY);
2024-08-23 23:58:26 +02:00
if (!cacheKey) {
core.warning("Error retrieving cache key from state.");
return;
}
if (matchedKey === cacheKey) {
core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
return;
2024-08-23 23:58:26 +02:00
}
2024-08-24 10:08:12 +02:00
await pruneCache();
2024-08-24 10:08:12 +02:00
core.info(`Saving cache path: ${cacheLocalPath}`);
await cache.saveCache([cacheLocalPath], cacheKey);
2024-08-23 23:58:26 +02:00
core.info(`cache saved with the key: ${cacheKey}`);
2024-08-23 23:58:26 +02:00
}
2024-08-24 10:08:12 +02:00
async function pruneCache(): Promise<void> {
const options: exec.ExecOptions = {
silent: !core.isDebug(),
};
const execArgs = ["cache", "prune", "--ci"];
2024-08-24 10:08:12 +02:00
core.info("Pruning cache...");
await exec.exec("uv", execArgs, options);
2024-08-24 10:08:12 +02:00
}
run();