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, pruneCache as shouldPruneCache, } from "./utils/inputs"; export async function run(): Promise { try { if (enableCache) { await saveCache(); } } catch (error) { const err = error as Error; core.setFailed(err.message); } process.exit(0); } async function saveCache(): Promise { const cacheKey = core.getState(STATE_CACHE_KEY); const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY); 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; } if (shouldPruneCache) { await pruneCache(); } core.info(`Saving cache path: ${cacheLocalPath}`); await cache.saveCache([cacheLocalPath], cacheKey); core.info(`cache saved with the key: ${cacheKey}`); } async function pruneCache(): Promise { const options: exec.ExecOptions = { silent: !core.isDebug(), }; const execArgs = ["cache", "prune", "--ci"]; core.info("Pruning cache..."); await exec.exec("uv", execArgs, options); } run();