#!/usr/bin/env node import { Command } from 'commander'; import { getVersion, showVersion } from './commands/version'; import { initProject } from './commands/init'; import { updateRules } from './commands/updateRules'; const program = new Command(); // 配置 CLI 基本信息 program .name('uniboot') .description('uniboot - 快速初始化工程项目的命令行工具\n\n 支持多种项目模板,通过交互式提示快速创建新工程。\n 目前支持 uniapp 和 uniappx 两种模板类型。') .version(getVersion(), '-v, --version', '显示版本号') .helpOption('-h, --help', '显示帮助信息') .addHelpText('after', ` 示例: $ uniboot 显示帮助信息 $ uniboot -v 显示版本号 $ uniboot --version 显示版本号 $ uniboot init 交互式选择模板并初始化项目 $ uniboot updateRules 同步模板规则文件到当前项目 $ uniboot --help 显示帮助信息 可用模板: uniapp UniApp 跨平台应用工程模板 uniappx UniApp X 扩展版工程模板 `); // 注册 init 命令 program .command('init') .description('交互式初始化项目,选择模板创建新工程') .addHelpText('after', ` 示例: $ uniboot init 启动交互式模板选择,将模板复制到当前目录 说明: 执行此命令后,将显示可用模板列表供选择。 选择模板后,模板文件将被复制到当前工作目录。 `) .action(async () => { await initProject(); }); // 注册 updateRules 命令 program .command('updateRules') .description('同步模板规则文件到当前项目') .addHelpText('after', ` 示例: $ uniboot updateRules 启动交互式模板选择,同步规则文件到当前目录 说明: 执行此命令后,将显示可用模板列表供选择。 选择模板后,将扫描模板中的 .cursor/rules 和 .kiro/steering 目录, 并将规则文件同步到当前工作目录。 同步规则: - 模板中存在但项目中不存在的文件将被复制 - 模板文件内容更长时将覆盖项目文件 - 项目文件内容更长或相等时保持不变 `) .action(async () => { await updateRules(); }); // 当没有参数时显示帮助信息 program.action(() => { program.help(); }); // 解析命令行参数 program.parse(process.argv);