ccman 2.1.5 → 2.1.6

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 (49) hide show
  1. package/dist/cli.js +219 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config/static-env.d.ts +1 -1
  4. package/dist/config/static-env.js +1 -1
  5. package/dist/core/EnvironmentManager.d.ts +27 -0
  6. package/dist/core/EnvironmentManager.d.ts.map +1 -0
  7. package/dist/core/EnvironmentManager.js +46 -0
  8. package/dist/core/EnvironmentManager.js.map +1 -0
  9. package/dist/i18n/messages.d.ts +30 -0
  10. package/dist/i18n/messages.d.ts.map +1 -1
  11. package/dist/i18n/messages.js +62 -0
  12. package/dist/i18n/messages.js.map +1 -1
  13. package/dist/setup/checker.d.ts +33 -0
  14. package/dist/setup/checker.d.ts.map +1 -0
  15. package/dist/setup/checker.js +169 -0
  16. package/dist/setup/checker.js.map +1 -0
  17. package/dist/setup/installer.d.ts +17 -0
  18. package/dist/setup/installer.d.ts.map +1 -0
  19. package/dist/setup/installer.js +108 -0
  20. package/dist/setup/installer.js.map +1 -0
  21. package/dist/setup/planner.d.ts +22 -0
  22. package/dist/setup/planner.d.ts.map +1 -0
  23. package/dist/setup/planner.js +213 -0
  24. package/dist/setup/planner.js.map +1 -0
  25. package/dist/setup/strategies/base.d.ts +26 -0
  26. package/dist/setup/strategies/base.d.ts.map +1 -0
  27. package/dist/setup/strategies/base.js +32 -0
  28. package/dist/setup/strategies/base.js.map +1 -0
  29. package/dist/setup/strategies/node.d.ts +9 -0
  30. package/dist/setup/strategies/node.d.ts.map +1 -0
  31. package/dist/setup/strategies/node.js +141 -0
  32. package/dist/setup/strategies/node.js.map +1 -0
  33. package/dist/setup/strategies/nvm.d.ts +9 -0
  34. package/dist/setup/strategies/nvm.d.ts.map +1 -0
  35. package/dist/setup/strategies/nvm.js +106 -0
  36. package/dist/setup/strategies/nvm.js.map +1 -0
  37. package/dist/setup/strategies/volta.d.ts +9 -0
  38. package/dist/setup/strategies/volta.d.ts.map +1 -0
  39. package/dist/setup/strategies/volta.js +111 -0
  40. package/dist/setup/strategies/volta.js.map +1 -0
  41. package/dist/setup/types.d.ts +95 -0
  42. package/dist/setup/types.d.ts.map +1 -0
  43. package/dist/setup/types.js +6 -0
  44. package/dist/setup/types.js.map +1 -0
  45. package/dist/utils/command.d.ts +33 -0
  46. package/dist/utils/command.d.ts.map +1 -0
  47. package/dist/utils/command.js +73 -0
  48. package/dist/utils/command.js.map +1 -0
  49. package/package.json +5 -2
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeCommand = executeCommand;
4
+ exports.commandExists = commandExists;
5
+ exports.getCommandVersion = getCommandVersion;
6
+ exports.getCommandPath = getCommandPath;
7
+ /**
8
+ * 命令执行工具函数
9
+ */
10
+ const child_process_1 = require("child_process");
11
+ const util_1 = require("util");
12
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
13
+ /**
14
+ * 执行命令
15
+ */
16
+ async function executeCommand(cmd, options) {
17
+ try {
18
+ const { stdout, stderr } = await execAsync(cmd, {
19
+ timeout: options?.timeout || 30000,
20
+ cwd: options?.cwd,
21
+ env: { ...process.env, ...options?.env }
22
+ });
23
+ return {
24
+ stdout: stdout.trim(),
25
+ stderr: stderr.trim(),
26
+ code: 0
27
+ };
28
+ }
29
+ catch (error) {
30
+ return {
31
+ stdout: error.stdout?.trim() || '',
32
+ stderr: error.stderr?.trim() || error.message,
33
+ code: error.code || 1
34
+ };
35
+ }
36
+ }
37
+ /**
38
+ * 检查命令是否存在
39
+ */
40
+ async function commandExists(cmd) {
41
+ const checkCmd = process.platform === 'win32'
42
+ ? `where ${cmd}`
43
+ : `command -v ${cmd}`;
44
+ const result = await executeCommand(checkCmd);
45
+ return result.code === 0;
46
+ }
47
+ /**
48
+ * 获取命令版本
49
+ */
50
+ async function getCommandVersion(cmd) {
51
+ const result = await executeCommand(`${cmd} --version`);
52
+ if (result.code !== 0) {
53
+ return null;
54
+ }
55
+ // 提取版本号(匹配常见格式 x.y.z)
56
+ const versionMatch = result.stdout.match(/\d+\.\d+\.\d+/);
57
+ return versionMatch ? versionMatch[0] : result.stdout.split('\n')[0];
58
+ }
59
+ /**
60
+ * 获取命令路径
61
+ */
62
+ async function getCommandPath(cmd) {
63
+ const checkCmd = process.platform === 'win32'
64
+ ? `where ${cmd}`
65
+ : `which ${cmd}`;
66
+ const result = await executeCommand(checkCmd);
67
+ if (result.code !== 0) {
68
+ return null;
69
+ }
70
+ // Windows 的 where 可能返回多个路径,取第一个
71
+ return result.stdout.split('\n')[0].trim();
72
+ }
73
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/utils/command.ts"],"names":[],"mappings":";;AA6BA,wCAuBC;AAKD,sCAOC;AAKD,8CAUC;AAKD,wCAaC;AAjGD;;GAEG;AACH,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAoBlC;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,OAAwB;IAExB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK;YAClC,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;SACzC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO;YAC7C,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3C,CAAC,CAAC,SAAS,GAAG,EAAE;QAChB,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3C,CAAC,CAAC,SAAS,GAAG,EAAE;QAChB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;IAEnB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccman",
3
- "version": "2.1.5",
3
+ "version": "2.1.6",
4
4
  "description": "Claude Code Manager - A TypeScript tool to manage Claude Code API configurations",
5
5
  "main": "dist/index.js",
6
6
  "packageManager": "pnpm@7.33.7",
@@ -60,13 +60,16 @@
60
60
  "chalk": "^4.1.2",
61
61
  "commander": "^11.0.0",
62
62
  "fs-extra": "^11.0.0",
63
- "inquirer": "^8.2.6"
63
+ "inquirer": "^8.2.6",
64
+ "semver": "^7.7.2"
64
65
  },
65
66
  "devDependencies": {
67
+ "@esbuild/darwin-arm64": "^0.25.10",
66
68
  "@types/fs-extra": "^11.0.0",
67
69
  "@types/inquirer": "^9.0.0",
68
70
  "@types/jest": "^29.0.0",
69
71
  "@types/node": "^20.0.0",
72
+ "@types/semver": "^7.7.1",
70
73
  "@typescript-eslint/eslint-plugin": "^6.0.0",
71
74
  "@typescript-eslint/parser": "^6.0.0",
72
75
  "eslint": "^8.0.0",