/** * CLI - 命令行接口 */ // 加载环境变量 require('dotenv').config(); const { Command } = require('commander'); const registry = require('./index'); const logger = require('./shared/logger'); const packageJson = require('../package.json'); const program = new Command(); // 主程序配置 program .name('aam') .description('Auto Account Machine - 自动化工具集') .version(packageJson.version); // 注册card-generator命令 const cardTool = registry.get('card-generator'); if (cardTool) { const cardCommand = program .command('card') .description('生成虚拟信用卡号') .option('-t, --type ', '卡类型 (unionpay, visa, mastercard, amex, discover)', 'unionpay') .option('-n, --count ', '生成数量', '1') .option('-f, --format ', '输出格式 (pipe, json, csv, pretty)', 'pipe') .action((options) => { cardTool.execute(options); }); // 添加子命令 cardCommand .command('list-types') .description('列出所有支持的卡类型') .action(() => { cardTool.listTypes(); }); cardCommand .command('list-formats') .description('列出所有支持的输出格式') .action(() => { cardTool.listFormats(); }); } // 注册account-register命令 const registerTool = registry.get('account-register'); if (registerTool) { const registerCommand = program .command('register') .description('自动注册账号') .option('-s, --site ', '网站名称 (windsurf, etc)') .option('--dry-run', '干运行模式:只生成数据不执行注册', false) .option('-f, --format ', '输出格式 (simple, json, table)', 'simple') .option('-o, --output ', '保存账号数据到文件') .option('--from-step ', '从第几步开始执行', '1') .option('--to-step ', '执行到第几步(不指定则执行全部)') .option('--password-strategy ', '密码策略 (email=使用邮箱, random=随机)', 'email') .option('--keep-browser-open', '保持浏览器打开', false) .action(async (options) => { // 转换步骤参数为数字 if (options.fromStep) options.fromStep = parseInt(options.fromStep); if (options.toStep) options.toStep = parseInt(options.toStep); await registerTool.execute(options); }); // 添加子命令 registerCommand .command('list') .description('列出所有支持的网站') .action(() => { registerTool.listSites(); }); registerCommand .command('generate') .description('只生成账号数据(不执行注册)') .option('-f, --format ', '输出格式', 'simple') .action((options) => { registerTool.generate(options); }); registerCommand .command('list-formats') .description('列出所有支持的输出格式') .action(() => { registerTool.listFormats(); }); } // 列出所有工具 program .command('list') .description('列出所有可用工具') .action(() => { const tools = registry.getAll(); console.log('\n可用工具:\n'); tools.forEach(tool => { const alias = tool.alias ? ` (${tool.alias})` : ''; console.log(` ${tool.name}${alias.padEnd(20)} - ${tool.description}`); }); console.log(''); }); // 帮助信息增强 program.on('--help', () => { console.log(''); console.log('Examples:'); console.log(' # 信用卡生成器'); console.log(' $ aam card # 生成一张默认银联卡'); console.log(' $ aam card -t visa # 生成一张Visa卡'); console.log(' $ aam card -t unionpay -n 10 # 生成10张银联卡'); console.log(' $ aam card list-types # 查看支持的卡类型'); console.log(''); console.log(' # 账号注册工具'); console.log(' $ aam register -s windsurf --dry-run # 生成Windsurf账号数据'); console.log(' $ aam register -s windsurf # 执行Windsurf注册'); console.log(' $ aam register list # 列出支持的网站'); console.log(' $ aam register generate # 生成通用账号数据'); console.log(''); console.log(' # 其他'); console.log(' $ aam list # 列出所有工具'); console.log(''); }); // 解析命令 program.parse(process.argv); // 如果没有参数,显示帮助 if (!process.argv.slice(2).length) { program.outputHelp(); }