Blame view

Yi.Vben5.Vue3/scripts/vsh/src/index.ts 1.89 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  import { colors, consola } from '@vben/node-utils';
  
  import { cac } from 'cac';
  
  import { version } from '../package.json';
  import { defineCheckCircularCommand } from './check-circular';
  import { defineDepcheckCommand } from './check-dep';
  import { defineCodeWorkspaceCommand } from './code-workspace';
  import { defineLintCommand } from './lint';
  import { definePubLintCommand } from './publint';
  
  // 命令描述
  const COMMAND_DESCRIPTIONS = {
    'check-circular': 'Check for circular dependencies',
    'check-dep': 'Check for unused dependencies',
    'code-workspace': 'Manage VS Code workspace settings',
    lint: 'Run linting on the project',
    publint: 'Check package.json files for publishing standards',
  } as const;
  
  /**
   * Initialize and run the CLI
   */
  async function main(): Promise<void> {
    try {
      const vsh = cac('vsh');
  
      // Register commands
      defineLintCommand(vsh);
      definePubLintCommand(vsh);
      defineCodeWorkspaceCommand(vsh);
      defineCheckCircularCommand(vsh);
      defineDepcheckCommand(vsh);
  
      // Handle invalid commands
      vsh.on('command:*', ([cmd]) => {
        consola.error(
          colors.red(`Invalid command: ${cmd}`),
          '\n',
          colors.yellow('Available commands:'),
          '\n',
          Object.entries(COMMAND_DESCRIPTIONS)
            .map(([cmd, desc]) => `  ${colors.cyan(cmd)} - ${desc}`)
            .join('\n'),
        );
        process.exit(1);
      });
  
      // Set up CLI
      vsh.usage('vsh <command> [options]');
      vsh.help();
      vsh.version(version);
  
      // Parse arguments
      vsh.parse();
    } catch (error) {
      consola.error(
        colors.red('An unexpected error occurred:'),
        '\n',
        error instanceof Error ? error.message : error,
      );
      process.exit(1);
    }
  }
  
  // Run the CLI
  main().catch((error) => {
    consola.error(
      colors.red('Failed to start CLI:'),
      '\n',
      error instanceof Error ? error.message : error,
    );
    process.exit(1);
  });