auto-account-machine/src/tools/card-generator/index.js
2025-11-18 23:02:49 +08:00

90 lines
2.1 KiB
JavaScript

/**
* Card Generator Tool - 工具入口
*/
const CardGenerator = require('../../shared/libs/card-generator');
const Formatter = require('../../shared/libs/card-generator/formatter');
const logger = require('../../shared/logger');
const TOOL_NAME = 'card-generator';
/**
* 执行卡生成
* @param {Object} options - 选项
*/
function execute(options) {
try {
const generator = new CardGenerator();
const formatter = new Formatter();
const type = options.type || 'unionpay';
const count = parseInt(options.count || 1);
const format = options.format || 'pipe';
// 验证卡类型
const supportedTypes = generator.getSupportedTypes().map(t => t.id);
if (!supportedTypes.includes(type)) {
logger.error(TOOL_NAME, `不支持的卡类型: ${type}`);
logger.info(TOOL_NAME, `支持的类型: ${supportedTypes.join(', ')}`);
process.exit(1);
}
// 生成卡
let cards;
if (count === 1) {
cards = [generator.generate(type)];
} else {
cards = generator.generateBatch(count, type);
}
// 格式化输出
const output = formatter.formatBatch(cards, format);
console.log(output);
if (count > 1) {
logger.success(TOOL_NAME, `成功生成 ${count}${type}`);
}
} catch (error) {
logger.error(TOOL_NAME, error.message);
process.exit(1);
}
}
/**
* 列出支持的卡类型
*/
function listTypes() {
const generator = new CardGenerator();
const types = generator.getSupportedTypes();
console.log('\n支持的卡类型:\n');
types.forEach(type => {
console.log(` ${type.id.padEnd(15)} - ${type.name}`);
});
console.log('');
}
/**
* 列出支持的输出格式
*/
function listFormats() {
const formatter = new Formatter();
const formats = formatter.getSupportedFormats();
console.log('\n支持的输出格式:\n');
formats.forEach(format => {
console.log(` ${format.id.padEnd(15)} - ${format.name}`);
});
console.log('');
}
module.exports = {
name: TOOL_NAME,
alias: 'card',
description: '生成虚拟信用卡号',
execute,
listTypes,
listFormats
};