import 'dotenv/config'; import { pino } from 'pino'; import { FsComCrawler } from '../src/crawlers/fscom.js'; import { EbayCrawler } from '../src/crawlers/ebay.js'; const log = pino({ name: 'crawl-orchestrator' }); const CRAWLERS: Record { run: () => Promise }> = { fscom: () => new FsComCrawler(), ebay: () => new EbayCrawler(), }; async function main() { const target = process.argv[2]; if (target && CRAWLERS[target]) { log.info({ crawler: target }, 'Running single crawler'); const crawler = CRAWLERS[target]!(); await crawler.run(); } else if (target === 'all' || !target) { log.info('Running all crawlers sequentially'); for (const [name, factory] of Object.entries(CRAWLERS)) { log.info({ crawler: name }, 'Starting crawler'); try { const crawler = factory(); await crawler.run(); } catch (err) { log.error({ err, crawler: name }, 'Crawler failed'); } } } else { log.error(`Unknown crawler: ${target}. Available: ${Object.keys(CRAWLERS).join(', ')}`); process.exit(1); } log.info('Crawl orchestration complete'); process.exit(0); } main();