organ-ai-zer
Version:
AI-powered file organizer CLI tool
52 lines • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.organize = organize;
const file_scanner_1 = require("../services/file-scanner");
const ai_organizer_1 = require("../services/ai-organizer");
const file_organizer_1 = require("../services/file-organizer");
const config_service_1 = require("../services/config-service");
async function organize(directory, options) {
try {
console.log(`Starting organization of: ${directory}`);
if (options.dryRun) {
console.log('🔍 Running in dry-run mode - no files will be moved');
}
// Initialize config service
const configService = config_service_1.ConfigService.getInstance(options.config);
const config = await configService.loadConfig();
// Validate API key
const hasValidKey = await configService.validateApiKey();
if (!hasValidKey) {
console.log('💡 Run "organ-ai-zer init" to set up your configuration');
process.exit(1);
}
const scanner = new file_scanner_1.FileScanner();
const files = await scanner.scanDirectory(directory, options.recursive || false);
console.log(`📁 Found ${files.length} files to process`);
const aiOrganizer = new ai_organizer_1.AIOrganizer(configService);
const useCache = !options.noCache;
const suggestions = await aiOrganizer.generateSuggestions(files, useCache);
console.log(`🤖 Generated ${suggestions.length} organization suggestions`);
if (options.dryRun) {
suggestions.forEach(suggestion => {
console.log(`📄 ${suggestion.file.name} → ${suggestion.suggestedPath}`);
console.log(` Reason: ${suggestion.reason} (${Math.round(suggestion.confidence * 100)}% confident)`);
});
return;
}
// Create backup if enabled
if (config.organization.createBackups) {
const fileOrganizer = new file_organizer_1.FileOrganizer();
const backupPath = await fileOrganizer.createBackup(directory);
console.log(`📦 Backup created: ${backupPath}`);
}
const fileOrganizer = new file_organizer_1.FileOrganizer();
await fileOrganizer.applySuggestions(suggestions);
console.log('✅ Organization complete!');
}
catch (error) {
console.error('❌ Error during organization:', error);
process.exit(1);
}
}
//# sourceMappingURL=organize.js.map