add hydrojudge cache clearCompileCache

This commit is contained in:
undefined committed 2025-05-07 18:47:38 +08:00
1 parent 2894d1e2ce
commit 83da1c8d66
2 files changed
+33 -2

No files matched your search

+3 -1
View File
@@ -397,7 +397,9 @@ ${nixConfBase}`);
exec('nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs', { stdio: 'inherit' });
exec('nix-channel --update', { stdio: 'inherit' });
},
`nix-env -iA ${['pm2', 'yarn', 'esbuild', 'bash', 'unzip', 'zip', 'diffutils', 'patch', 'screen'].map((i) => `nixpkgs.${i}`).join(' ')}`,
`nix-env -iA ${[
'pm2', 'yarn', 'esbuild', 'bash', 'unzip', 'zip', 'diffutils', 'patch', 'screen', 'gawk',
].map((i) => `nixpkgs.${i}`).join(' ')}`,
'yarn config set disable-self-update-check true',
async () => {
const rl = createInterface(process.stdin, process.stdout);
+30 -1
View File
@@ -18,7 +18,7 @@ export = async function main() {
fs.emptyDirSync(CACHE_DIR);
logger.info('Cleaned cache.');
} else if (argv.args[1] === 'prune') {
const duration = +argv.options.duration || 30;
const duration = +argv.options.duration || +argv.options.days || 30;
const now = Date.now();
const hosts = await fs.readdir(CACHE_DIR, { withFileTypes: true });
let cnt = 0;
@@ -59,5 +59,34 @@ export = async function main() {
for (const [domain, s] of top10) {
logger.info(' %s: %s', domain, size(s));
}
} else if (argv.args[1] === 'clearCompileCache') {
const hosts = await fs.readdir(CACHE_DIR, { withFileTypes: true });
let cnt = 0;
for (const host of hosts) {
const hostdir = path.resolve(CACHE_DIR, host.name);
if (!host.isDirectory()) continue;
const domains = await fs.readdir(hostdir, { withFileTypes: true });
for (const domain of domains) {
if (!domain.isDirectory()) continue;
const domaindir = path.resolve(hostdir, domain.name);
const problems = await fs.readdir(domaindir, { withFileTypes: true });
for (const problem of problems) {
const problemdir = path.resolve(domaindir, problem.name);
if (!fs.statSync(problemdir).isDirectory()) continue;
const etags = path.resolve(problemdir, 'etags');
if (fs.existsSync(etags)) {
const etag = JSON.parse(await fs.readFile(etags, 'utf-8'));
if (etag['*cache']) {
const removed = etag['*cache'];
delete etag['*cache'];
await fs.writeFile(etags, JSON.stringify(etag));
logger.info('Removed bianry %s %o', problemdir, removed);
cnt++;
}
}
}
}
}
logger.info('Done! %d items deleted.', cnt);
}
};