@cloudglab/yapi-cli 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +14 -6
  3. package/dist/cli.js +37 -11
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/auth-mode.d.ts +10 -0
  6. package/dist/core/auth-mode.js +65 -0
  7. package/dist/core/auth-mode.js.map +1 -0
  8. package/dist/core/cli-output.d.ts +1 -1
  9. package/dist/core/cli-output.js +28 -5
  10. package/dist/core/cli-output.js.map +1 -1
  11. package/dist/core/completion.d.ts +3 -2
  12. package/dist/core/completion.js +7 -5
  13. package/dist/core/completion.js.map +1 -1
  14. package/dist/core/doctor.js +25 -17
  15. package/dist/core/doctor.js.map +1 -1
  16. package/dist/core/manifest.d.ts +15 -0
  17. package/dist/core/manifest.js +44 -0
  18. package/dist/core/manifest.js.map +1 -0
  19. package/dist/core/output.js +33 -0
  20. package/dist/core/output.js.map +1 -1
  21. package/dist/core/tool-registry.d.ts +10 -0
  22. package/dist/core/tool-registry.js +50 -0
  23. package/dist/core/tool-registry.js.map +1 -0
  24. package/dist/index.d.ts +2 -1
  25. package/dist/index.js +2 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/install.d.ts +1 -3
  28. package/dist/install.js +142 -71
  29. package/dist/install.js.map +1 -1
  30. package/dist/manifest.json +560 -0
  31. package/dist/services/yapi/api.d.ts +8 -12
  32. package/dist/services/yapi/api.js +39 -20
  33. package/dist/services/yapi/api.js.map +1 -1
  34. package/dist/services/yapi/config.d.ts +3 -0
  35. package/dist/services/yapi/config.js +39 -7
  36. package/dist/services/yapi/config.js.map +1 -1
  37. package/dist/services/yapi/index.d.ts +1 -1
  38. package/dist/services/yapi/index.js +1 -1
  39. package/dist/services/yapi/index.js.map +1 -1
  40. package/dist/services/yapi/types.d.ts +7 -11
  41. package/dist/tools/index.d.ts +1 -2
  42. package/dist/tools/index.js +1 -4
  43. package/dist/tools/index.js.map +1 -1
  44. package/dist/tools/yapi/groups.d.ts +2 -0
  45. package/dist/tools/yapi/groups.js +2 -0
  46. package/dist/tools/yapi/groups.js.map +1 -0
  47. package/dist/tools/yapi/register-auth.js +72 -47
  48. package/dist/tools/yapi/register-auth.js.map +1 -1
  49. package/dist/tools/yapi/register-group.js +34 -0
  50. package/dist/tools/yapi/register-group.js.map +1 -1
  51. package/dist/tools/yapi/register-interface.js +194 -4
  52. package/dist/tools/yapi/register-interface.js.map +1 -1
  53. package/dist/tools/yapi/register-project.js +186 -0
  54. package/dist/tools/yapi/register-project.js.map +1 -1
  55. package/dist/tools/yapi/register-util.js +199 -1
  56. package/dist/tools/yapi/register-util.js.map +1 -1
  57. package/dist/tools/yapi/register.d.ts +5 -0
  58. package/dist/tools/yapi/register.js +39 -0
  59. package/dist/tools/yapi/register.js.map +1 -1
  60. package/dist/tools/yapi/utils.js +1 -1
  61. package/dist/tools/yapi/utils.js.map +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/docs/index.html +47 -0
  65. package/package.json +6 -2
  66. package/skills/yapi-cli/SKILL.md +1 -0
  67. package/skills/yapi-cli/reference/auth.md +21 -14
  68. package/skills/yapi-cli/reference/commands.md +3 -3
  69. package/skills/yapi-cli/reference/install.md +6 -8
  70. package/skills/yapi-cli/reference/overview.md +4 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.3 - 2026-06-22
4
+
5
+ - 安装与初始化链路改为对齐 `zentao-cli` 的统一配置校验流程,避免 `npx -y @cloudglab/yapi-cli@latest install` 先装 skill 再因缺少 `--url` 直接失败。
6
+ - `install` 与 `config-init` 在交互终端下会统一引导输入 YApi 地址、登录用户名、登录密码和认证方式;非交互环境下会给出一致的显式传参提示。
7
+ - 同步修正文档中的安装示例与说明,去掉已经不再适用的旧参数写法。
8
+
9
+ ## 0.0.2 - 2026-06-22
10
+
11
+ - 新增按组懒加载与 `manifest` 机制,帮助、补全和命令执行更稳定。
12
+ - `install` 与 `config-init` 现在会引导选择普通登录或 LDAP 登录。
13
+ - 统一了配置、自检和输出文案,补齐了 `docs/index.html` 与覆盖率审计说明。
14
+
15
+ ## 0.0.1 - 2026-06-21
16
+
17
+ - 补齐初始 CLI 骨架与基础命令。
18
+
3
19
  ## 0.0.0 - 2026-06-19
4
20
 
5
21
  - 初始化通用 CLI 骨架。
package/README.md CHANGED
@@ -10,14 +10,14 @@
10
10
 
11
11
  - 默认 JSON 输出适合 AI / 脚本消费:统一走 `jsonResult`,并可切到 `pretty` 人类可读模式。
12
12
  - 新增内置命令:`doctor`、`changelog`、`completion`,补齐安装 / 更新 / 卸载 / 版本查看链路。
13
- - 登录同时支持 `--token` `--email --password`,可覆盖 token 认证、普通账号和 LDAP 登录场景。
13
+ - 配置文件按 `url/username/password/authMode` 收敛;`install` / `config-init` 现在统一走配置校验流程:交互终端会逐步提示填写,非交互环境会明确要求显式传参,token 只保存在认证缓存里。
14
14
  - 命令层统一使用 `InMemoryCliRegistry + Zod schema + jsonResult`,便于 Agent 稳定调用。
15
15
  - 共享了分页、项目 ID、可选文本、布尔值和导出格式等 Zod 片段,减少重复定义。
16
16
  - API 客户端加入超时、重试和错误分层,遇到认证 / 网络 / 配置错误时可直接判断。
17
17
 
18
18
  ## 典型变化
19
19
 
20
- - **输出模式**:`yapi --json ...` 会返回 JSON 结果;默认模式在终端输出更适合人工阅读的文本。
20
+ - **输出模式**:`yapi <command> --json` 会返回 JSON 结果;默认模式在终端输出更适合人工阅读的文本。
21
21
  - **自检**:`yapi doctor --verbose` 可检查 Node 版本、配置、网络连通性和认证状态。
22
22
  - **版本记录**:`yapi changelog --limit 5`、`--version`、`--since`、`--raw` 都可用。
23
23
  - **补全**:`yapi completion bash|zsh|fish` 会生成对应 shell 的补全脚本。
@@ -33,10 +33,10 @@
33
33
  ### 推荐:一键安装 CLI + Skill
34
34
 
35
35
  ```bash
36
- npx -y yapi-cli@latest install
36
+ npx -y @cloudglab/yapi-cli@latest install
37
37
  ```
38
38
 
39
- 该命令会安装全局 CLI 和内置 Skill,并在配置缺失或登录失败时给出引导。配置完成后即可直接使用查询命令。
39
+ 该命令会安装全局 CLI 和内置 Skill。首次安装时,会先检查本机是否已有可用配置;如果没有,会在交互终端里逐步提示你输入 YApi 地址、登录用户名、登录密码和认证方式。
40
40
 
41
41
  如果需要重新安装 skill,可直接运行:
42
42
 
@@ -55,6 +55,7 @@ yapi update
55
55
  ```bash
56
56
  yapi help
57
57
  yapi list
58
+ yapi install
58
59
  yapi version --verbose
59
60
  yapi doctor
60
61
  yapi changelog --limit 5
@@ -62,12 +63,17 @@ yapi completion bash
62
63
  ```
63
64
 
64
65
  ```bash
65
- yapi config-init --server https://yapi.example.com
66
+ yapi config-init
67
+ yapi config-init --url https://yapi.example.com --username user@example.com --password secret --auth-mode native
68
+ yapi config-init --url https://yapi.example.com --username user@example.com --password secret --auth-mode ldap
69
+ yapi login
66
70
  yapi login --token xxx
67
- yapi login --email user@example.com --password secret
71
+ yapi login --email user@example.com --password secret --ldap true
68
72
  yapi whoami
69
73
  ```
70
74
 
75
+ 如果在 CI 或其他非交互环境中初始化配置,请显式传入 `--url`、`--username`、`--password`、`--auth-mode`。
76
+
71
77
  ```bash
72
78
  yapi group-list
73
79
  yapi project-list --project-id 1
@@ -128,4 +134,6 @@ yapi docs-sync --file docs/api.md --project-id 1 --cat-id 2
128
134
  pnpm typecheck
129
135
  pnpm build
130
136
  pnpm test
137
+ pnpm check
138
+ pnpm release:smoke-query
131
139
  ```
package/dist/cli.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import { CLI_VERSION } from './version.js';
2
2
  import { runInstallCommand, runUninstallCommand, runUpdateCommand } from './install.js';
3
3
  import { formatCommandResult, printCommandHelp, printHelp } from './core/cli-output.js';
4
- import { InMemoryCliRegistry, parseCommandInput } from './core/cli-registry.js';
5
- import { registerTools } from './tools/index.js';
4
+ import { parseCommandInput } from './core/cli-registry.js';
5
+ import { buildRegistryForCommand } from './tools/index.js';
6
6
  import { runDoctor } from './core/doctor.js';
7
7
  import { runChangelog } from './core/changelog.js';
8
8
  import { generateCompletionScript } from './core/completion.js';
9
9
  import { checkForUpdates, getUpdateSuggestion } from './core/update-probe.js';
10
10
  import { handleCliError } from './core/errors.js';
11
11
  import { setOutputFormat, getOutputFormatter } from './tools/shared.js';
12
+ import { getAvailableCommandNames, resolveCommandGroup } from './core/manifest.js';
12
13
  const BUILTIN_COMMANDS = ['help', 'list', 'version', 'install', 'update', 'uninstall', 'remove', 'doctor', 'changelog', 'completion'];
13
14
  function parseTopLevelArgs(rawArgs) {
14
15
  const args = [...rawArgs];
@@ -40,17 +41,38 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
40
41
  else {
41
42
  setOutputFormat('pretty');
42
43
  }
43
- const registry = new InMemoryCliRegistry();
44
- registerTools(registry);
45
44
  const { commandName, commandArgs } = parseTopLevelArgs(rawArgs);
45
+ const commandNames = getAvailableCommandNames();
46
46
  // --- 无参 -> 总帮助 ---
47
47
  if (!commandName || commandName === 'help') {
48
- printHelp(appName, registry.listCommands());
48
+ if (commandArgs.length === 0) {
49
+ printHelp(appName, commandNames);
50
+ return;
51
+ }
52
+ const targetName = commandArgs[0];
53
+ if (isBuiltin(targetName)) {
54
+ printBuiltinHelp(appName, targetName);
55
+ return;
56
+ }
57
+ const helpGroup = resolveCommandGroup(targetName);
58
+ if (!helpGroup) {
59
+ process.stderr.write(`未找到命令: ${targetName}\n运行 \`${appName} help\` 查看可用命令。\n`);
60
+ process.exitCode = 1;
61
+ return;
62
+ }
63
+ const helpRegistry = await buildRegistryForCommand({ commandName: targetName, commandGroup: helpGroup });
64
+ const helpCommand = helpRegistry.getCommand(targetName);
65
+ if (!helpCommand) {
66
+ process.stderr.write(`未找到命令: ${targetName}\n运行 \`${appName} help\` 查看可用命令。\n`);
67
+ process.exitCode = 1;
68
+ return;
69
+ }
70
+ printCommandHelp(appName, helpCommand);
49
71
  return;
50
72
  }
51
73
  // --- list ---
52
74
  if (commandName === 'list') {
53
- printHelp(appName, registry.listCommands());
75
+ printHelp(appName, commandNames);
54
76
  return;
55
77
  }
56
78
  // --- version ---
@@ -119,11 +141,18 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
119
141
  }
120
142
  // --- completion ---
121
143
  if (commandName === 'completion') {
122
- const script = generateCompletionScript(registry.listCommands(), appName, commandArgs[0]);
144
+ const script = generateCompletionScript(commandNames, appName, commandArgs[0]);
123
145
  process.stdout.write(script);
124
146
  return;
125
147
  }
126
148
  // --- 业务命令 ---
149
+ const commandGroup = resolveCommandGroup(commandName);
150
+ if (!commandGroup) {
151
+ process.stderr.write(`未找到命令: ${commandName}\n运行 \`${appName} help\` 查看可用命令。\n`);
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ const registry = await buildRegistryForCommand({ commandName, commandGroup });
127
156
  const command = registry.getCommand(commandName);
128
157
  if (!command) {
129
158
  process.stderr.write(`未找到命令: ${commandName}\n运行 \`${appName} help\` 查看可用命令。\n`);
@@ -193,11 +222,8 @@ function printBuiltinHelp(appName, name) {
193
222
  ' --skill-only 只刷新 skill,不检查 CLI 更新',
194
223
  ].join('\n') + '\n');
195
224
  }
196
- else if (name === 'doctor' || name === 'install' || name === 'uninstall' || name === 'version') {
197
- printHelp(appName, []);
198
- }
199
225
  else {
200
- printHelp(appName, []);
226
+ printHelp(appName, getAvailableCommandNames());
201
227
  }
202
228
  }
203
229
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { YApiConfig } from '../services/yapi/types.js';
2
+ export type YApiAuthMode = YApiConfig['authMode'];
3
+ export declare function isInteractive(): boolean;
4
+ export declare function resolveRequiredTextInput(value: string | undefined, options: {
5
+ context: string;
6
+ flag: string;
7
+ prompt: string;
8
+ normalize?: (input: string) => string;
9
+ }): Promise<string>;
10
+ export declare function resolveAuthModeSelection(authMode: YApiAuthMode | undefined, context: string): Promise<YApiAuthMode>;
@@ -0,0 +1,65 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { stdin, stdout } from 'node:process';
3
+ export function isInteractive() {
4
+ return stdin.isTTY && stdout.isTTY && process.env.CI !== 'true';
5
+ }
6
+ export async function resolveRequiredTextInput(value, options) {
7
+ const normalize = options.normalize ?? ((input) => input.trim());
8
+ const currentValue = value?.trim();
9
+ if (currentValue) {
10
+ return normalize(currentValue);
11
+ }
12
+ if (!isInteractive()) {
13
+ throw new Error(`${options.context} 未提供 ${options.flag},请显式传 ${options.flag}`);
14
+ }
15
+ const rl = createInterface({ input: stdin, output: stdout });
16
+ try {
17
+ while (true) {
18
+ const answer = normalize(await rl.question(`${options.prompt}:`));
19
+ if (answer) {
20
+ return answer;
21
+ }
22
+ stdout.write(`${options.prompt} 不能为空,请重新输入。\n`);
23
+ }
24
+ }
25
+ finally {
26
+ rl.close();
27
+ }
28
+ }
29
+ function normalizeAuthMode(value) {
30
+ const normalized = value.trim().toLowerCase();
31
+ if (normalized === '' || ['1', 'native', 'normal', '普通', '普通登录', '普通登录方式'].includes(normalized)) {
32
+ return 'native';
33
+ }
34
+ if (['2', 'ldap', 'ldap登录', 'ldap登录方式'].includes(normalized)) {
35
+ return 'ldap';
36
+ }
37
+ return null;
38
+ }
39
+ export async function resolveAuthModeSelection(authMode, context) {
40
+ if (authMode)
41
+ return authMode;
42
+ if (!isInteractive()) {
43
+ throw new Error(`${context} 未指定认证方式,请显式传 --auth-mode native 或 --auth-mode ldap`);
44
+ }
45
+ const rl = createInterface({ input: stdin, output: stdout });
46
+ try {
47
+ while (true) {
48
+ stdout.write([
49
+ '',
50
+ `${context} 需要选择登录方式:`,
51
+ ' 1) native 普通登录(YApi 原生密码登录)',
52
+ ' 2) ldap LDAP 登录(需要 LDAP 账号)',
53
+ ].join('\n') + '\n');
54
+ const answer = normalizeAuthMode(await rl.question('请输入 1 或 2(默认 1):'));
55
+ if (answer) {
56
+ return answer;
57
+ }
58
+ stdout.write('输入无效,请重新输入 1 或 2。\n');
59
+ }
60
+ }
61
+ finally {
62
+ rl.close();
63
+ }
64
+ }
65
+ //# sourceMappingURL=auth-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-mode.js","sourceRoot":"","sources":["../../src/core/auth-mode.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,6 @@ export declare function formatCommandResult(result: {
8
8
  }>;
9
9
  }): string;
10
10
  /** 打印总帮助 */
11
- export declare function printHelp(appName: string, commands: CliCommandDefinition[]): void;
11
+ export declare function printHelp(appName: string, commands: Array<CliCommandDefinition | string>): void;
12
12
  /** 打印单个命令帮助 */
13
13
  export declare function printCommandHelp(appName: string, command: CliCommandDefinition): void;
@@ -10,14 +10,30 @@ export function formatCommandResult(result) {
10
10
  }
11
11
  /** 打印总帮助 */
12
12
  export function printHelp(appName, commands) {
13
+ const commandList = commands.map((command) => {
14
+ if (typeof command === 'string') {
15
+ return { name: command, description: '' };
16
+ }
17
+ return { name: command.name, description: command.description ?? '' };
18
+ });
19
+ const maxCommandWidth = Math.max(...commandList.map((command) => command.name.length), 0, 12) + 2;
13
20
  const lines = [
14
21
  `${appName} v${CLI_VERSION}`,
15
22
  '',
23
+ '适配范围:YApi REST API + 登录接口(native / ldap)',
24
+ '运行要求:Node.js >= 18',
25
+ '',
16
26
  '用法:',
17
27
  ` ${appName} <command> [options]`,
18
28
  ` ${appName} help <command>`,
19
29
  ` npx ${appName} <command> [options]`,
20
30
  '',
31
+ '快速开始:',
32
+ ` ${appName} list 查看全部可用命令(推荐)`,
33
+ ` ${appName} help <command> 查看命令参数`,
34
+ ` ${appName} whoami 校验当前账号`,
35
+ ` ${appName} doctor 自检配置与网络`,
36
+ '',
21
37
  '内置命令:',
22
38
  ' help 显示帮助信息',
23
39
  ' list 列出所有命令',
@@ -32,17 +48,22 @@ export function printHelp(appName, commands) {
32
48
  '',
33
49
  '业务命令:',
34
50
  ];
35
- if (commands.length === 0) {
51
+ if (commandList.length === 0) {
36
52
  lines.push(' (暂无)');
37
53
  }
38
54
  else {
39
- for (const command of commands) {
40
- lines.push(` ${command.name.padEnd(24)}${command.description ?? ''}`);
55
+ for (const command of commandList) {
56
+ lines.push(` ${command.name.padEnd(maxCommandWidth)}${command.description}`);
41
57
  }
42
58
  }
43
- if (commands.length > 0) {
59
+ if (commandList.length > 0) {
60
+ lines.push('');
61
+ lines.push(`共 ${commandList.length} 个业务命令。使用 \`${appName} help <command>\` 查看参数详情。`);
44
62
  lines.push('');
45
- lines.push(`共 ${commands.length} 个业务命令。使用 \`${appName} help <command>\` 查看参数详情。`);
63
+ lines.push('下一步:');
64
+ lines.push(` - 查看参数:${appName} help <command>`);
65
+ lines.push(` - 校验账号:${appName} whoami`);
66
+ lines.push(` - 初始化配置:${appName} config-init --url <url> --username <username> --password <password>`);
46
67
  }
47
68
  process.stdout.write(`${lines.join('\n')}\n`);
48
69
  }
@@ -59,6 +80,8 @@ export function printCommandHelp(appName, command) {
59
80
  '',
60
81
  '参数:',
61
82
  ...(schemaRows.length > 0 ? schemaRows : [' (暂无参数)']),
83
+ '',
84
+ `提示:使用 \`${appName} --json ${command.name} ...\` 可输出 JSON 结果`,
62
85
  ];
63
86
  process.stdout.write(`${lines.join('\n')}\n`);
64
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli-output.js","sourceRoot":"","sources":["../../src/core/cli-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACtH,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,mBAAmB,CAAC,MAA2D;IAC7F,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,YAAY;AACZ,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,QAAgC;IACzE,MAAM,KAAK,GAAG;QACZ,GAAG,OAAO,KAAK,WAAW,EAAE;QAC5B,EAAE;QACF,KAAK;QACL,KAAK,OAAO,sBAAsB;QAClC,KAAK,OAAO,iBAAiB;QAC7B,SAAS,OAAO,sBAAsB;QACtC,EAAE;QACF,OAAO;QACP,wBAAwB;QACxB,wBAAwB;QACxB,uBAAuB;QACvB,oCAAoC;QACpC,iCAAiC;QACjC,oCAAoC;QACpC,oCAAoC;QACpC,sBAAsB;QACtB,wBAAwB;QACxB,+BAA+B;QAC/B,EAAE;QACF,OAAO;KACR,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,eAAe,OAAO,2BAA2B,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,eAAe;AACf,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAA6B;IAC7E,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,aAAa,IAAI,WAAW,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;QAC5B,OAAO,CAAC,WAAW,IAAI,EAAE;QACzB,EAAE;QACF,KAAK;QACL,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;KACvD,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"cli-output.js","sourceRoot":"","sources":["../../src/core/cli-output.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- import type { CliCommandDefinition } from './cli-registry.js';
2
1
  /** 生成 bash/zsh/fish 补全脚本 */
3
- export declare function generateCompletionScript(commands: CliCommandDefinition[], appName: string, shellArg?: string): string;
2
+ export declare function generateCompletionScript(commandNames: Array<string | {
3
+ name: string;
4
+ }>, appName: string, shellArg?: string): string;
@@ -6,16 +6,18 @@ function detectShellType(shellArg) {
6
6
  return 'bash';
7
7
  }
8
8
  /** 生成 bash/zsh/fish 补全脚本 */
9
- export function generateCompletionScript(commands, appName, shellArg) {
9
+ export function generateCompletionScript(commandNames, appName, shellArg) {
10
10
  const shell = detectShellType(shellArg);
11
- const commandNames = commands.map((c) => c.name).sort();
11
+ const sortedCommandNames = commandNames
12
+ .map((command) => (typeof command === 'string' ? command : command.name))
13
+ .sort();
12
14
  if (shell === 'zsh') {
13
- return generateZshCompletion(commandNames, appName);
15
+ return generateZshCompletion(sortedCommandNames, appName);
14
16
  }
15
17
  if (shell === 'fish') {
16
- return generateFishCompletion(commandNames, appName);
18
+ return generateFishCompletion(sortedCommandNames, appName);
17
19
  }
18
- return generateBashCompletion(commandNames, appName);
20
+ return generateBashCompletion(sortedCommandNames, appName);
19
21
  }
20
22
  function generateBashCompletion(commandNames, appName) {
21
23
  const builtins = ['help', 'list', 'version', 'install', 'update', 'uninstall', 'remove', 'doctor', 'changelog'];
@@ -1 +1 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/core/completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/core/completion.ts"],"names":[],"mappings":"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"}
@@ -22,39 +22,42 @@ function collectConfigChecks() {
22
22
  const checks = [];
23
23
  const configDir = join(homedir(), '.yapi');
24
24
  if (!existsSync(configDir)) {
25
- checks.push({ name: '配置目录 ~/.yapi', status: 'fail', message: '不存在', detail: '请运行 `yapi config-init` 或 `yapi install --server <url>`' });
25
+ checks.push({ name: '配置目录 ~/.yapi', status: 'fail', message: '不存在', detail: '请运行 `yapi config-init --url <url> --username <username> --password <password>` 或 `yapi install --url <url> --username <username> --password <password>`' });
26
26
  return checks;
27
27
  }
28
28
  checks.push({ name: '配置目录 ~/.yapi', status: 'pass', message: '已创建' });
29
- const config = loadConfig();
29
+ let config = null;
30
+ try {
31
+ config = loadConfig();
32
+ }
33
+ catch (error) {
34
+ checks.push({
35
+ name: '配置文件 config.json',
36
+ status: 'fail',
37
+ message: '存在但无法直接使用',
38
+ detail: error instanceof Error ? error.message : String(error),
39
+ });
40
+ return checks;
41
+ }
30
42
  if (!config) {
31
43
  checks.push({ name: '配置文件 config.json', status: 'fail', message: '不存在或无法解析' });
32
44
  return checks;
33
45
  }
34
46
  checks.push({ name: '配置文件 config.json', status: 'pass', message: '已加载' });
35
- checks.push({ name: '服务器地址', status: 'pass', message: config.serverUrl });
36
- if (config.token) {
37
- checks.push({ name: 'API Token', status: 'pass', message: '已设置' });
38
- }
39
- else {
40
- checks.push({ name: 'API Token', status: 'warn', message: '未设置', detail: '部分功能需要 token' });
41
- }
42
- if (config.projectId) {
43
- checks.push({ name: '默认项目 ID', status: 'pass', message: String(config.projectId) });
44
- }
45
- else {
46
- checks.push({ name: '默认项目 ID', status: 'warn', message: '未设置', detail: '可通过 --project-id 参数指定' });
47
- }
47
+ checks.push({ name: 'YApi 地址', status: 'pass', message: config.url });
48
+ checks.push({ name: '登录用户名', status: config.username ? 'pass' : 'fail', message: config.username || '未设置' });
49
+ checks.push({ name: '登录密码', status: config.password ? 'pass' : 'fail', message: config.password ? '******' : '未设置' });
50
+ checks.push({ name: '认证方式', status: 'pass', message: config.authMode });
48
51
  return checks;
49
52
  }
50
53
  async function collectNetworkChecks() {
51
54
  const checks = [];
52
55
  const config = loadConfig();
53
- if (!config?.serverUrl) {
56
+ if (!config?.url) {
54
57
  checks.push({ name: '网络连通性', status: 'skip', message: '未配置服务器地址' });
55
58
  return checks;
56
59
  }
57
- const url = config.serverUrl.replace(/\/+$/, '');
60
+ const url = config.url.replace(/\/+$/, '');
58
61
  try {
59
62
  const controller = new AbortController();
60
63
  const timer = setTimeout(() => controller.abort(), 5000);
@@ -118,6 +121,11 @@ export async function runDoctor(args) {
118
121
  lines.push('');
119
122
  lines.push('提示: 使用 --verbose 可包含网络连通性检查');
120
123
  }
124
+ lines.push('');
125
+ lines.push('下一步:');
126
+ lines.push(' - 校验当前账号:yapi whoami');
127
+ lines.push(' - 查看命令参数:yapi help <command>');
128
+ lines.push(' - 重新写入配置:yapi config-init --url <url> --username <username> --password <password>');
121
129
  process.stdout.write(`${lines.join('\n')}\n`);
122
130
  return report;
123
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { YApiCommandGroup } from '../tools/yapi/groups.js';
2
+ export interface CliManifestCommand {
3
+ name: string;
4
+ group: YApiCommandGroup;
5
+ }
6
+ export interface CliManifest {
7
+ version: string;
8
+ groups: YApiCommandGroup[];
9
+ commands: CliManifestCommand[];
10
+ commandToGroup: Record<string, YApiCommandGroup>;
11
+ }
12
+ export declare function createManifest(commands: CliManifestCommand[]): CliManifest;
13
+ export declare function loadManifest(): CliManifest;
14
+ export declare function getAvailableCommandNames(): string[];
15
+ export declare function resolveCommandGroup(commandName: string): YApiCommandGroup | undefined;
@@ -0,0 +1,44 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { CLI_VERSION } from '../version.js';
5
+ import { getYApiCommandGroupEntries } from '../tools/yapi/register.js';
6
+ const DIST_MANIFEST_RELATIVE_PATH = '../manifest.json';
7
+ const ROOT_MANIFEST_RELATIVE_PATH = '../../dist/manifest.json';
8
+ export function createManifest(commands) {
9
+ const dedupedCommands = [...commands].sort((left, right) => left.name.localeCompare(right.name));
10
+ const groups = [...new Set(dedupedCommands.map((command) => command.group))];
11
+ return {
12
+ version: CLI_VERSION,
13
+ groups,
14
+ commands: dedupedCommands,
15
+ commandToGroup: Object.fromEntries(dedupedCommands.map((command) => [command.name, command.group])),
16
+ };
17
+ }
18
+ function resolveManifestCandidates() {
19
+ const currentFile = fileURLToPath(import.meta.url);
20
+ const currentDir = path.dirname(currentFile);
21
+ return [
22
+ path.resolve(currentDir, DIST_MANIFEST_RELATIVE_PATH),
23
+ path.resolve(currentDir, ROOT_MANIFEST_RELATIVE_PATH),
24
+ ];
25
+ }
26
+ export function loadManifest() {
27
+ for (const candidate of resolveManifestCandidates()) {
28
+ if (!existsSync(candidate)) {
29
+ continue;
30
+ }
31
+ const source = readFileSync(candidate, 'utf-8');
32
+ return JSON.parse(source);
33
+ }
34
+ const entries = getYApiCommandGroupEntries();
35
+ const commands = entries.flatMap((entry) => entry.commands.map((name) => ({ name, group: entry.name })));
36
+ return createManifest(commands);
37
+ }
38
+ export function getAvailableCommandNames() {
39
+ return loadManifest().commands.map((command) => command.name);
40
+ }
41
+ export function resolveCommandGroup(commandName) {
42
+ return loadManifest().commandToGroup[commandName];
43
+ }
44
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAcvE,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;AACvD,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAE/D,MAAM,UAAU,cAAc,CAAC,QAA8B;IAC3D,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAuB,CAAC;IAEnG,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,MAAM;QACN,QAAQ,EAAE,eAAe;QACzB,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAqC;KACxI,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB;IAChC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,KAAK,MAAM,SAAS,IAAI,yBAAyB,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgB,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzG,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,YAAY,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,YAAY,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC"}