wjx-cli 0.1.3 → 0.1.4

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.
@@ -2,72 +2,67 @@ import { createInterface } from "node:readline/promises";
2
2
  import { stdin, stderr } from "node:process";
3
3
  import { listSurveys } from "wjx-api-sdk";
4
4
  import { loadConfig, saveConfig, CONFIG_PATH } from "../lib/config.js";
5
+ function mask(value) {
6
+ if (value.length <= 4)
7
+ return "****";
8
+ return value.slice(0, 4) + "****" + value.slice(-4);
9
+ }
5
10
  export function registerInitCommands(program) {
6
11
  program
7
12
  .command("init")
8
13
  .description("初始化配置(交互式设置 API Key、Base URL、Corp ID)")
9
14
  .action(async () => {
15
+ const config = loadConfig();
16
+ const currentApiKey = process.env.WJX_API_KEY || config?.apiKey || "";
17
+ const currentBaseUrl = process.env.WJX_BASE_URL || config?.baseUrl || "";
18
+ const currentCorpId = process.env.WJX_CORP_ID || config?.corpId || "";
19
+ stderr.write("问卷星 CLI 配置向导\n");
20
+ stderr.write(`配置文件: ${CONFIG_PATH}\n\n`);
10
21
  const rl = createInterface({ input: stdin, output: stderr });
11
22
  try {
12
- // Check existing config
13
- const existing = loadConfig();
14
- if (existing) {
15
- const masked = existing.apiKey.length > 8
16
- ? existing.apiKey.slice(0, 8) + "..."
17
- : "***";
18
- stderr.write(`已存在配置文件: ${CONFIG_PATH}\n`);
19
- stderr.write(` apiKey: ${masked}\n`);
20
- if (existing.baseUrl)
21
- stderr.write(` baseUrl: ${existing.baseUrl}\n`);
22
- if (existing.corpId)
23
- stderr.write(` corpId: ${existing.corpId}\n`);
24
- const overwrite = await rl.question("\n覆盖现有配置?(y/N) ");
25
- if (overwrite.trim().toLowerCase() !== "y") {
26
- stderr.write("已取消。\n");
27
- return;
28
- }
29
- stderr.write("\n");
30
- }
31
- // Prompt API Key (required)
23
+ // 1. API Key (required *)
32
24
  let apiKey = "";
33
25
  while (!apiKey) {
34
- const input = await rl.question("WJX_API_KEY (必填): ");
35
- apiKey = input.trim();
26
+ const hint = currentApiKey ? ` [${mask(currentApiKey)}]` : "";
27
+ const input = await rl.question(`* WJX_API_KEY${hint}: `);
28
+ apiKey = input.trim() || currentApiKey;
36
29
  if (!apiKey) {
37
- stderr.write("API Key 不能为空。\n");
30
+ stderr.write(" API Key 不能为空,请输入。\n");
38
31
  }
39
32
  }
40
- // Prompt Base URL (optional)
41
- const baseUrlInput = await rl.question("WJX_BASE_URL (可选, 默认 https://www.wjx.cn): ");
42
- const baseUrl = baseUrlInput.trim() || undefined;
43
- // Prompt Corp ID (optional)
44
- const corpIdInput = await rl.question("WJX_CORP_ID (可选, 通讯录功能需要): ");
45
- const corpId = corpIdInput.trim() || undefined;
33
+ // 2. Base URL (optional)
34
+ const defaultUrl = currentBaseUrl || "https://www.wjx.cn";
35
+ const baseUrlInput = await rl.question(` WJX_BASE_URL [${defaultUrl}]: `);
36
+ const baseUrl = baseUrlInput.trim() || defaultUrl;
37
+ // 3. Corp ID (optional)
38
+ const corpHint = currentCorpId ? ` [${currentCorpId}]` : "";
39
+ const corpIdInput = await rl.question(` WJX_CORP_ID${corpHint}: `);
40
+ const corpId = corpIdInput.trim() || currentCorpId || undefined;
46
41
  // Validate API Key
47
- stderr.write("\n正在验证 API Key...\n");
42
+ stderr.write("\n验证 API Key...");
48
43
  try {
49
44
  const result = await listSurveys({ page_index: 1, page_size: 1 }, { apiKey });
50
45
  if (result.result === false) {
51
- stderr.write(`! API Key 验证失败: ${result.errormsg}\n`);
46
+ stderr.write(` 失败 (${result.errormsg})\n`);
52
47
  stderr.write(" 配置仍将保存,请检查 Key 是否正确。\n");
53
48
  }
54
49
  else {
55
- stderr.write("OK API Key 验证成功。\n");
50
+ stderr.write(" OK\n");
56
51
  }
57
52
  }
58
53
  catch (err) {
59
- stderr.write(`! 无法连接 API: ${err instanceof Error ? err.message : String(err)}\n`);
54
+ stderr.write(` 失败 (${err instanceof Error ? err.message : String(err)})\n`);
60
55
  stderr.write(" 配置仍将保存。\n");
61
56
  }
62
- // Save config
63
- const config = { apiKey };
64
- if (baseUrl)
65
- config.baseUrl = baseUrl;
57
+ // Save
58
+ const newConfig = { apiKey };
59
+ if (baseUrl !== "https://www.wjx.cn")
60
+ newConfig.baseUrl = baseUrl;
66
61
  if (corpId)
67
- config.corpId = corpId;
68
- saveConfig(config);
69
- stderr.write(`\nOK 配置已保存到 ${CONFIG_PATH}\n`);
70
- stderr.write("提示: 你也可以直接编辑该文件来修改配置。\n");
62
+ newConfig.corpId = corpId;
63
+ saveConfig(newConfig);
64
+ stderr.write(`\n已保存到 ${CONFIG_PATH}\n`);
65
+ stderr.write("提示: 也可以直接编辑该文件修改配置。\n");
71
66
  }
72
67
  finally {
73
68
  rl.close();
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wjx-cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "问卷星 (Wenjuanxing) CLI — AI Agent 原生命令行工具",
5
5
  "main": "dist/index.js",
6
6
  "bin": {