@kareemaly/researcher
Version:
CLI tool for web research
50 lines (49 loc) • 2.21 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.cleanCommand = cleanCommand;
const fileSystemStorage_1 = require("../services/fileSystemStorage");
const logger_1 = require("../utils/logger");
const path_1 = __importDefault(require("path"));
const log = (0, logger_1.createLogger)("cli:clean");
function cleanCommand(program) {
program
.command("clean")
.description("Clean old searches")
.option("--older-than <days>", "remove searches older than N days", "30")
.option("--all", "remove all searches")
.action(async (options, command) => {
try {
const globalOpts = command.parent?.opts();
const outputDir = path_1.default.resolve(globalOpts?.output || "research");
log("Cleaning searches from: %s", outputDir);
const storage = new fileSystemStorage_1.FileSystemStorage({ basePath: outputDir });
await storage.initialize();
const beforeStats = await storage.getStats();
let removed;
if (options.all) {
removed = await storage.cleanAll();
console.log(`\nRemoved all ${removed} searches`);
}
else {
const days = parseInt(options.olderThan);
const cutoff = new Date();
cutoff.setDate(cutoff.getDate() - days);
removed = await storage.cleanOlderThan(cutoff);
console.log(`\nRemoved ${removed} searches older than ${days} days`);
}
const afterStats = await storage.getStats();
const freedSpace = (beforeStats.totalSizeBytes - afterStats.totalSizeBytes) /
1024 /
1024;
console.log(`Freed ${freedSpace.toFixed(2)} MB of space`);
}
catch (error) {
log.error("Failed to clean searches: %O", error);
console.error("Failed to clean searches:", error instanceof Error ? error.message : error);
process.exit(1);
}
});
}