A personal website powered by Astro and ATProto
at main 1.7 kB view raw
1#!/usr/bin/env node 2 3import { CollectionDiscovery } from '../src/lib/build/collection-discovery'; 4import { loadConfig } from '../src/lib/config/site'; 5import path from 'path'; 6 7async function main() { 8 console.log('🚀 Starting collection discovery...'); 9 10 try { 11 const config = loadConfig(); 12 const discovery = new CollectionDiscovery(); 13 14 if (!config.atproto.handle || config.atproto.handle === 'your-handle-here') { 15 console.error('❌ No ATProto handle configured. Please set ATPROTO_HANDLE in your environment.'); 16 process.exit(1); 17 } 18 19 console.log(`🔍 Discovering collections for: ${config.atproto.handle}`); 20 21 // Discover collections 22 const results = await discovery.discoverCollections(config.atproto.handle); 23 24 // Save results 25 const outputPath = path.join(process.cwd(), 'src/lib/generated/discovered-types.ts'); 26 await discovery.saveDiscoveryResults(results, outputPath); 27 28 console.log('✅ Collection discovery complete!'); 29 console.log(`📊 Summary:`); 30 console.log(` - Collections: ${results.totalCollections}`); 31 console.log(` - Records: ${results.totalRecords}`); 32 console.log(` - Repository: ${results.repository.handle}`); 33 console.log(` - Output: ${outputPath}`); 34 35 // Log discovered collections 36 console.log('\n📦 Discovered Collections:'); 37 for (const collection of results.collections) { 38 console.log(` - ${collection.name} (${collection.service})`); 39 console.log(` Types: ${collection.$types.join(', ')}`); 40 } 41 42 } catch (error) { 43 console.error('❌ Collection discovery failed:', error); 44 process.exit(1); 45 } 46} 47 48// Run if called directly 49// Run the main function 50main();