clean nested and arbitrary profile and target directories

This commit is contained in:
Arpad Borsos
2022-07-09 16:14:38 +02:00
parent 827b33fbd0
commit 86bae2494f
5 changed files with 621 additions and 388 deletions

33
dist/restore/index.js vendored
View File

@ -61868,6 +61868,28 @@ async function getRustVersion() {
async function cleanTargetDir(targetDir, packages) {
let dir;
// remove all *files* from the profile directory
dir = await external_fs_default().promises.opendir(targetDir);
for await (const dirent of dir) {
if (dirent.isDirectory()) {
let dirName = external_path_default().join(dir.path, dirent.name);
// is it a profile dir, or a nested target dir?
let isNestedTarget = await exists(external_path_default().join(dirName, "CACHEDIR.TAG"));
try {
if (isNestedTarget) {
await cleanTargetDir(dirName, packages);
}
else {
await cleanProfileTarget(dirName, packages);
}
}
catch { }
}
else if (dirent.name !== "CACHEDIR.TAG") {
await rm(dir.path, dirent);
}
}
await external_fs_default().promises.unlink(external_path_default().join(targetDir, "./.rustc_info.json"));
// TODO: remove all unknown files, clean all directories like profiles
try {
@ -62002,6 +62024,15 @@ async function rm(parent, dirent) {
}
catch { }
}
async function exists(path) {
try {
await external_fs_default().promises.access(path);
return true;
}
catch {
return false;
}
}
;// CONCATENATED MODULE: ./src/restore.ts
@ -62040,8 +62071,8 @@ async function run() {
if (restoreKey !== key) {
// pre-clean the target directory on cache mismatch
for (const workspace of config.workspaces) {
const packages = await workspace.getPackages();
try {
const packages = await workspace.getPackages();
await cleanTargetDir(workspace.target, packages);
}
catch { }