UNPKG

@quicksand-cloud/specs

Version:

QuickSand Cloud Specs CLI 工具 - 开发规范配置管理命令行工具,提供项目初始化、配置更新和验证功能

74 lines (72 loc) 2.32 kB
#!/usr/bin/env node import { intro, confirm, isCancel, cancel, log, multiselect, outro } from '@clack/prompts'; import { e as editorconfig, c as cSpell, g as git, h as husky, l as lintStaged, p as prettier, t as typescript, o as oxlint, a as commitlint, S as Specs } from './shared/specs.CwFHFXDN.mjs'; import 'node:path'; import 'deepmerge-ts'; import 'fs-extra'; const allPlugins = [ editorconfig, cSpell, git, husky, lintStaged, prettier, typescript, oxlint, commitlint ]; intro("\u{1F680} QuickSand Cloud Specs \u914D\u7F6E\u751F\u6210\u5668"); const isDevelopment = await confirm({ message: "\u662F\u5426\u542F\u7528\u5F00\u53D1\u6A21\u5F0F\uFF1F", initialValue: false }); if (isCancel(isDevelopment)) { cancel("\u64CD\u4F5C\u5DF2\u53D6\u6D88"); process.exit(0); } if (isDevelopment) { log.info("\u{1F527} \u5F00\u53D1\u6A21\u5F0F\u5DF2\u542F\u7528 - \u5C06\u4FDD\u6301 workspace:^ \u4F9D\u8D56"); } else { log.info("\u{1F4E6} \u751F\u4EA7\u6A21\u5F0F\u5DF2\u542F\u7528 - \u5C06 workspace:^ \u4F9D\u8D56\u66FF\u6362\u4E3A latest"); } const pluginOptions = [ { value: "all", label: "\u5168\u90E8\u63D2\u4EF6", hint: "\u6267\u884C\u6240\u6709\u53EF\u7528\u7684\u63D2\u4EF6\u914D\u7F6E" }, ...allPlugins.map((plugin) => ({ value: plugin.name, label: plugin.name, hint: plugin.description })) ]; const selectedPlugins = await multiselect({ message: "\u8BF7\u9009\u62E9\u8981\u6267\u884C\u7684\u63D2\u4EF6\u914D\u7F6E\uFF1A", options: pluginOptions, required: true }); if (isCancel(selectedPlugins)) { cancel("\u64CD\u4F5C\u5DF2\u53D6\u6D88"); process.exit(0); } let pluginsToRun; if (selectedPlugins.includes("all")) { pluginsToRun = allPlugins; console.log("\u2728 \u5C06\u6267\u884C\u6240\u6709\u63D2\u4EF6\u914D\u7F6E"); } else { pluginsToRun = allPlugins.filter( (plugin) => selectedPlugins.includes(plugin.name) ); console.log(`\u2728 \u5C06\u6267\u884C ${pluginsToRun.length} \u4E2A\u63D2\u4EF6\u914D\u7F6E`); } const specs = new Specs(process.cwd(), pluginsToRun, isDevelopment); try { await specs.run(); outro("\u{1F389} \u914D\u7F6E\u751F\u6210\u5B8C\u6210\uFF01"); } catch (error) { cancel( `\u274C \u6267\u884C\u5931\u8D25: ${error instanceof Error ? error.message : String(error)}` ); process.exit(1); }