auto-account-machine/src/cli.js
dengqichen 5c74ad349c aaaaa
2025-11-17 12:11:16 +08:00

137 lines
4.4 KiB
JavaScript

/**
* 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 <type>', '卡类型 (unionpay, visa, mastercard, amex, discover)', 'unionpay')
.option('-n, --count <number>', '生成数量', '1')
.option('-f, --format <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 <site>', '网站名称 (windsurf, etc)')
.option('--dry-run', '干运行模式:只生成数据不执行注册', false)
.option('-f, --format <format>', '输出格式 (simple, json, table)', 'simple')
.option('-o, --output <file>', '保存账号数据到文件')
.option('--from-step <number>', '从第几步开始执行', '1')
.option('--to-step <number>', '执行到第几步(不指定则执行全部)')
.option('--password-strategy <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 <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();
}