3
0
Fork 0
mirror of https://github.com/Swatinem/rust-cache synced 2025-04-26 21:35:35 +00:00

feat: add option to cache all crates (#137)

Add cache-all-crates option which allows all crates to be cached instead
of just the dependency crates. This is useful when additional crates are
required for CI tooling.
This commit is contained in:
Steven Hartland 2023-05-11 22:15:09 +01:00 committed by GitHub
parent 827c240e23
commit def0926359
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 17 deletions

21
dist/save/index.js vendored
View file

@ -60234,7 +60234,7 @@ async function cleanBin() {
}
}
}
async function cleanRegistry(packages) {
async function cleanRegistry(packages, crates = true) {
// `.cargo/registry/src`
// we can remove this completely, as cargo will recreate this from `cache`
await rmRF(external_path_default().join(CARGO_HOME, "registry", "src"));
@ -60252,6 +60252,10 @@ async function cleanRegistry(packages) {
// TODO: else, clean `.cache` based on the `packages`
}
}
if (!crates) {
core.debug(`skipping crate cleanup`);
return;
}
const pkgSet = new Set(packages.map((p) => `${p.name}-${p.version}.crate`));
// `.cargo/registry/cache`
const cacheDir = await external_fs_default().promises.opendir(external_path_default().join(CARGO_HOME, "registry", "cache"));
@ -60417,29 +60421,30 @@ async function run() {
await cleanTargetDir(workspace.target, packages);
}
catch (e) {
core.info(`[warning] ${e.stack}`);
core.error(`${e.stack}`);
}
}
try {
core.info(`... Cleaning cargo registry ...`);
await cleanRegistry(allPackages);
const creates = core.getInput("cache-all-crates").toLowerCase() || "false";
core.info(`... Cleaning cargo registry cache-all-crates: ${creates} ...`);
await cleanRegistry(allPackages, creates === "true");
}
catch (e) {
core.info(`[warning] ${e.stack}`);
core.error(`${e.stack}`);
}
try {
core.info(`... Cleaning cargo/bin ...`);
await cleanBin();
}
catch (e) {
core.info(`[warning] ${e.stack}`);
core.error(`${e.stack}`);
}
try {
core.info(`... Cleaning cargo git cache ...`);
await cleanGit(allPackages);
}
catch (e) {
core.info(`[warning] ${e.stack}`);
core.error(`${e.stack}`);
}
core.info(`... Saving cache ...`);
// Pass a copy of cachePaths to avoid mutating the original array as reported by:
@ -60448,7 +60453,7 @@ async function run() {
await cache.saveCache(config.cachePaths.slice(), config.cacheKey);
}
catch (e) {
core.info(`[warning] ${e.stack}`);
core.error(`${e.stack}`);
}
}
run();