UNPKG

@kareemaly/researcher

Version:
50 lines (49 loc) 2.21 kB
"use strict"; 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); } }); }