colyn-cli 3.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.
Files changed (263) hide show
  1. package/README-en.md +85 -0
  2. package/README.md +85 -0
  3. package/bin/colyn +25 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +116 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/add.d.ts +6 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.helpers.d.ts +48 -0
  11. package/dist/commands/add.helpers.d.ts.map +1 -0
  12. package/dist/commands/add.helpers.js +251 -0
  13. package/dist/commands/add.helpers.js.map +1 -0
  14. package/dist/commands/add.js +286 -0
  15. package/dist/commands/add.js.map +1 -0
  16. package/dist/commands/checkout.d.ts +16 -0
  17. package/dist/commands/checkout.d.ts.map +1 -0
  18. package/dist/commands/checkout.js +428 -0
  19. package/dist/commands/checkout.js.map +1 -0
  20. package/dist/commands/completion.d.ts +10 -0
  21. package/dist/commands/completion.d.ts.map +1 -0
  22. package/dist/commands/completion.js +380 -0
  23. package/dist/commands/completion.js.map +1 -0
  24. package/dist/commands/config.d.ts +11 -0
  25. package/dist/commands/config.d.ts.map +1 -0
  26. package/dist/commands/config.js +338 -0
  27. package/dist/commands/config.js.map +1 -0
  28. package/dist/commands/index.d.ts +10 -0
  29. package/dist/commands/index.d.ts.map +1 -0
  30. package/dist/commands/index.js +41 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/info.d.ts +6 -0
  33. package/dist/commands/info.d.ts.map +1 -0
  34. package/dist/commands/info.js +374 -0
  35. package/dist/commands/info.js.map +1 -0
  36. package/dist/commands/init.d.ts +6 -0
  37. package/dist/commands/init.d.ts.map +1 -0
  38. package/dist/commands/init.handlers.d.ts +27 -0
  39. package/dist/commands/init.handlers.d.ts.map +1 -0
  40. package/dist/commands/init.handlers.js +314 -0
  41. package/dist/commands/init.handlers.js.map +1 -0
  42. package/dist/commands/init.helpers.d.ts +42 -0
  43. package/dist/commands/init.helpers.d.ts.map +1 -0
  44. package/dist/commands/init.helpers.js +275 -0
  45. package/dist/commands/init.helpers.js.map +1 -0
  46. package/dist/commands/init.js +61 -0
  47. package/dist/commands/init.js.map +1 -0
  48. package/dist/commands/install.d.ts +6 -0
  49. package/dist/commands/install.d.ts.map +1 -0
  50. package/dist/commands/install.helpers.d.ts +32 -0
  51. package/dist/commands/install.helpers.d.ts.map +1 -0
  52. package/dist/commands/install.helpers.js +124 -0
  53. package/dist/commands/install.helpers.js.map +1 -0
  54. package/dist/commands/install.js +104 -0
  55. package/dist/commands/install.js.map +1 -0
  56. package/dist/commands/list-project.d.ts +11 -0
  57. package/dist/commands/list-project.d.ts.map +1 -0
  58. package/dist/commands/list-project.js +260 -0
  59. package/dist/commands/list-project.js.map +1 -0
  60. package/dist/commands/list.d.ts +15 -0
  61. package/dist/commands/list.d.ts.map +1 -0
  62. package/dist/commands/list.helpers.d.ts +50 -0
  63. package/dist/commands/list.helpers.d.ts.map +1 -0
  64. package/dist/commands/list.helpers.js +143 -0
  65. package/dist/commands/list.helpers.js.map +1 -0
  66. package/dist/commands/list.js +530 -0
  67. package/dist/commands/list.js.map +1 -0
  68. package/dist/commands/merge.d.ts +6 -0
  69. package/dist/commands/merge.d.ts.map +1 -0
  70. package/dist/commands/merge.helpers.d.ts +74 -0
  71. package/dist/commands/merge.helpers.d.ts.map +1 -0
  72. package/dist/commands/merge.helpers.js +307 -0
  73. package/dist/commands/merge.helpers.js.map +1 -0
  74. package/dist/commands/merge.js +260 -0
  75. package/dist/commands/merge.js.map +1 -0
  76. package/dist/commands/release.d.ts +6 -0
  77. package/dist/commands/release.d.ts.map +1 -0
  78. package/dist/commands/release.helpers.d.ts +61 -0
  79. package/dist/commands/release.helpers.d.ts.map +1 -0
  80. package/dist/commands/release.helpers.js +277 -0
  81. package/dist/commands/release.helpers.js.map +1 -0
  82. package/dist/commands/release.js +127 -0
  83. package/dist/commands/release.js.map +1 -0
  84. package/dist/commands/remove.d.ts +6 -0
  85. package/dist/commands/remove.d.ts.map +1 -0
  86. package/dist/commands/remove.helpers.d.ts +59 -0
  87. package/dist/commands/remove.helpers.d.ts.map +1 -0
  88. package/dist/commands/remove.helpers.js +190 -0
  89. package/dist/commands/remove.helpers.js.map +1 -0
  90. package/dist/commands/remove.js +137 -0
  91. package/dist/commands/remove.js.map +1 -0
  92. package/dist/commands/repair.d.ts +6 -0
  93. package/dist/commands/repair.d.ts.map +1 -0
  94. package/dist/commands/repair.helpers.d.ts +5 -0
  95. package/dist/commands/repair.helpers.d.ts.map +1 -0
  96. package/dist/commands/repair.helpers.js +499 -0
  97. package/dist/commands/repair.helpers.js.map +1 -0
  98. package/dist/commands/repair.js +28 -0
  99. package/dist/commands/repair.js.map +1 -0
  100. package/dist/commands/status.d.ts +6 -0
  101. package/dist/commands/status.d.ts.map +1 -0
  102. package/dist/commands/status.js +116 -0
  103. package/dist/commands/status.js.map +1 -0
  104. package/dist/commands/system-integration.d.ts +6 -0
  105. package/dist/commands/system-integration.d.ts.map +1 -0
  106. package/dist/commands/system-integration.helpers.d.ts +70 -0
  107. package/dist/commands/system-integration.helpers.d.ts.map +1 -0
  108. package/dist/commands/system-integration.helpers.js +313 -0
  109. package/dist/commands/system-integration.helpers.js.map +1 -0
  110. package/dist/commands/system-integration.js +132 -0
  111. package/dist/commands/system-integration.js.map +1 -0
  112. package/dist/commands/tmux.d.ts +11 -0
  113. package/dist/commands/tmux.d.ts.map +1 -0
  114. package/dist/commands/tmux.js +500 -0
  115. package/dist/commands/tmux.js.map +1 -0
  116. package/dist/commands/todo.d.ts +6 -0
  117. package/dist/commands/todo.d.ts.map +1 -0
  118. package/dist/commands/todo.helpers.d.ts +50 -0
  119. package/dist/commands/todo.helpers.d.ts.map +1 -0
  120. package/dist/commands/todo.helpers.js +297 -0
  121. package/dist/commands/todo.helpers.js.map +1 -0
  122. package/dist/commands/todo.js +579 -0
  123. package/dist/commands/todo.js.map +1 -0
  124. package/dist/commands/update.d.ts +18 -0
  125. package/dist/commands/update.d.ts.map +1 -0
  126. package/dist/commands/update.helpers.d.ts +89 -0
  127. package/dist/commands/update.helpers.d.ts.map +1 -0
  128. package/dist/commands/update.helpers.js +335 -0
  129. package/dist/commands/update.helpers.js.map +1 -0
  130. package/dist/commands/update.js +187 -0
  131. package/dist/commands/update.js.map +1 -0
  132. package/dist/core/config-loader.d.ts +47 -0
  133. package/dist/core/config-loader.d.ts.map +1 -0
  134. package/dist/core/config-loader.js +188 -0
  135. package/dist/core/config-loader.js.map +1 -0
  136. package/dist/core/config-merger.d.ts +29 -0
  137. package/dist/core/config-merger.d.ts.map +1 -0
  138. package/dist/core/config-merger.js +100 -0
  139. package/dist/core/config-merger.js.map +1 -0
  140. package/dist/core/config-migration.d.ts +64 -0
  141. package/dist/core/config-migration.d.ts.map +1 -0
  142. package/dist/core/config-migration.js +340 -0
  143. package/dist/core/config-migration.js.map +1 -0
  144. package/dist/core/config-new.d.ts +19 -0
  145. package/dist/core/config-new.d.ts.map +1 -0
  146. package/dist/core/config-new.js +58 -0
  147. package/dist/core/config-new.js.map +1 -0
  148. package/dist/core/config-schema.d.ts +221 -0
  149. package/dist/core/config-schema.d.ts.map +1 -0
  150. package/dist/core/config-schema.js +168 -0
  151. package/dist/core/config-schema.js.map +1 -0
  152. package/dist/core/config.d.ts +55 -0
  153. package/dist/core/config.d.ts.map +1 -0
  154. package/dist/core/config.js +143 -0
  155. package/dist/core/config.js.map +1 -0
  156. package/dist/core/dev-server.d.ts +29 -0
  157. package/dist/core/dev-server.d.ts.map +1 -0
  158. package/dist/core/dev-server.js +54 -0
  159. package/dist/core/dev-server.js.map +1 -0
  160. package/dist/core/discovery.d.ts +51 -0
  161. package/dist/core/discovery.d.ts.map +1 -0
  162. package/dist/core/discovery.js +247 -0
  163. package/dist/core/discovery.js.map +1 -0
  164. package/dist/core/env.d.ts +13 -0
  165. package/dist/core/env.d.ts.map +1 -0
  166. package/dist/core/env.js +75 -0
  167. package/dist/core/env.js.map +1 -0
  168. package/dist/core/git.d.ts +31 -0
  169. package/dist/core/git.d.ts.map +1 -0
  170. package/dist/core/git.js +56 -0
  171. package/dist/core/git.js.map +1 -0
  172. package/dist/core/paths.d.ts +86 -0
  173. package/dist/core/paths.d.ts.map +1 -0
  174. package/dist/core/paths.js +256 -0
  175. package/dist/core/paths.js.map +1 -0
  176. package/dist/core/tmux-config.d.ts +174 -0
  177. package/dist/core/tmux-config.d.ts.map +1 -0
  178. package/dist/core/tmux-config.js +545 -0
  179. package/dist/core/tmux-config.js.map +1 -0
  180. package/dist/core/tmux-config.legacy.d.ts +243 -0
  181. package/dist/core/tmux-config.legacy.d.ts.map +1 -0
  182. package/dist/core/tmux-config.legacy.js +896 -0
  183. package/dist/core/tmux-config.legacy.js.map +1 -0
  184. package/dist/core/tmux.d.ts +214 -0
  185. package/dist/core/tmux.d.ts.map +1 -0
  186. package/dist/core/tmux.js +712 -0
  187. package/dist/core/tmux.js.map +1 -0
  188. package/dist/core/toolchain-resolver.d.ts +51 -0
  189. package/dist/core/toolchain-resolver.d.ts.map +1 -0
  190. package/dist/core/toolchain-resolver.js +364 -0
  191. package/dist/core/toolchain-resolver.js.map +1 -0
  192. package/dist/core/worktree-status.d.ts +20 -0
  193. package/dist/core/worktree-status.d.ts.map +1 -0
  194. package/dist/core/worktree-status.js +67 -0
  195. package/dist/core/worktree-status.js.map +1 -0
  196. package/dist/i18n/index.d.ts +36 -0
  197. package/dist/i18n/index.d.ts.map +1 -0
  198. package/dist/i18n/index.js +157 -0
  199. package/dist/i18n/index.js.map +1 -0
  200. package/dist/i18n/locales/en.d.ts +866 -0
  201. package/dist/i18n/locales/en.d.ts.map +1 -0
  202. package/dist/i18n/locales/en.js +985 -0
  203. package/dist/i18n/locales/en.js.map +1 -0
  204. package/dist/i18n/locales/zh-CN.d.ts +865 -0
  205. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  206. package/dist/i18n/locales/zh-CN.js +985 -0
  207. package/dist/i18n/locales/zh-CN.js.map +1 -0
  208. package/dist/index.d.ts +2 -0
  209. package/dist/index.d.ts.map +1 -0
  210. package/dist/index.js +4 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/plugins/builtin/gradle.d.ts +9 -0
  213. package/dist/plugins/builtin/gradle.d.ts.map +1 -0
  214. package/dist/plugins/builtin/gradle.js +164 -0
  215. package/dist/plugins/builtin/gradle.js.map +1 -0
  216. package/dist/plugins/builtin/maven.d.ts +9 -0
  217. package/dist/plugins/builtin/maven.d.ts.map +1 -0
  218. package/dist/plugins/builtin/maven.js +127 -0
  219. package/dist/plugins/builtin/maven.js.map +1 -0
  220. package/dist/plugins/builtin/npm.d.ts +9 -0
  221. package/dist/plugins/builtin/npm.d.ts.map +1 -0
  222. package/dist/plugins/builtin/npm.js +238 -0
  223. package/dist/plugins/builtin/npm.js.map +1 -0
  224. package/dist/plugins/builtin/pip.d.ts +9 -0
  225. package/dist/plugins/builtin/pip.d.ts.map +1 -0
  226. package/dist/plugins/builtin/pip.js +210 -0
  227. package/dist/plugins/builtin/pip.js.map +1 -0
  228. package/dist/plugins/builtin/xcode.d.ts +12 -0
  229. package/dist/plugins/builtin/xcode.d.ts.map +1 -0
  230. package/dist/plugins/builtin/xcode.js +438 -0
  231. package/dist/plugins/builtin/xcode.js.map +1 -0
  232. package/dist/plugins/index.d.ts +13 -0
  233. package/dist/plugins/index.d.ts.map +1 -0
  234. package/dist/plugins/index.js +24 -0
  235. package/dist/plugins/index.js.map +1 -0
  236. package/dist/plugins/manager.d.ts +93 -0
  237. package/dist/plugins/manager.d.ts.map +1 -0
  238. package/dist/plugins/manager.js +270 -0
  239. package/dist/plugins/manager.js.map +1 -0
  240. package/dist/plugins/utils.d.ts +42 -0
  241. package/dist/plugins/utils.d.ts.map +1 -0
  242. package/dist/plugins/utils.js +175 -0
  243. package/dist/plugins/utils.js.map +1 -0
  244. package/dist/types/index.d.ts +104 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +21 -0
  247. package/dist/types/index.js.map +1 -0
  248. package/dist/types/plugin.d.ts +200 -0
  249. package/dist/types/plugin.d.ts.map +1 -0
  250. package/dist/types/plugin.js +19 -0
  251. package/dist/types/plugin.js.map +1 -0
  252. package/dist/utils/logger.d.ts +42 -0
  253. package/dist/utils/logger.d.ts.map +1 -0
  254. package/dist/utils/logger.js +80 -0
  255. package/dist/utils/logger.js.map +1 -0
  256. package/docs/en/manual/04-command-reference/README.md +58 -0
  257. package/docs/en/manual/README.md +108 -0
  258. package/docs/zh-CN/manual/04-command-reference/README.md +58 -0
  259. package/docs/zh-CN/manual/README.md +108 -0
  260. package/package.json +65 -0
  261. package/shell/colyn.sh +55 -0
  262. package/shell/completion.bash +270 -0
  263. package/shell/completion.zsh +167 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * 解析后的版本号
3
+ */
4
+ interface ParsedVersion {
5
+ major: number;
6
+ minor: number;
7
+ patch: number;
8
+ }
9
+ /**
10
+ * 版本类型
11
+ */
12
+ export type VersionType = 'major' | 'minor' | 'patch';
13
+ /**
14
+ * 验证版本号格式
15
+ */
16
+ export declare function parseVersion(version: string): ParsedVersion;
17
+ /**
18
+ * 增加版本号
19
+ * @param currentVersion 当前版本,explicit version 时可为 null
20
+ */
21
+ export declare function bumpVersion(currentVersion: string | null, type: VersionType | string): string;
22
+ /**
23
+ * 检查 git 工作区状态是否干净
24
+ */
25
+ export declare function checkGitStatus(dir: string): Promise<boolean>;
26
+ /**
27
+ * 获取当前分支
28
+ */
29
+ export declare function getCurrentBranch(dir: string): Promise<string>;
30
+ /**
31
+ * 创建 git commit
32
+ * 暂存所有已修改文件(由 bumpVersion 写入),如无变更则跳过
33
+ * @returns true 表示已创建提交,false 表示无变更跳过
34
+ */
35
+ export declare function createCommit(dir: string, message: string): Promise<boolean>;
36
+ /**
37
+ * 创建 git tag
38
+ */
39
+ export declare function createTag(dir: string, tag: string, message: string): Promise<void>;
40
+ /**
41
+ * 推送到远程仓库
42
+ */
43
+ export declare function pushToRemote(dir: string, branch: string, tag?: string): Promise<void>;
44
+ /**
45
+ * 执行发布流程
46
+ * @param projectRoot 项目根目录(.colyn 的父目录)
47
+ * @param dir 主分支目录路径
48
+ * @param versionType 版本类型或版本号
49
+ * @param verbose 是否输出详细信息
50
+ */
51
+ export declare function executeRelease(projectRoot: string, dir: string, versionType: VersionType | string, verbose?: boolean): Promise<string>;
52
+ /**
53
+ * 显示发布成功信息
54
+ */
55
+ export declare function displayReleaseSuccess(version: string, branch: string): void;
56
+ /**
57
+ * 显示回滚命令
58
+ */
59
+ export declare function displayRollbackCommands(version: string): void;
60
+ export {};
61
+ //# sourceMappingURL=release.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.helpers.d.ts","sourceRoot":"","sources":["../../src/commands/release.helpers.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAa3D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,IAAI,EAAE,WAAW,GAAG,MAAM,GACzB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GAAG,MAAM,EACjC,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA4IjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAO7D"}
@@ -0,0 +1,277 @@
1
+ import simpleGit from 'simple-git';
2
+ import { ColynError } from '../types/index.js';
3
+ import { outputLine, outputSuccess, outputBold, outputStep, outputInfo, outputWarning } from '../utils/logger.js';
4
+ import { t } from '../i18n/index.js';
5
+ import { pluginManager } from '../plugins/index.js';
6
+ import { resolveToolchains } from '../core/toolchain-resolver.js';
7
+ /**
8
+ * 验证版本号格式
9
+ */
10
+ export function parseVersion(version) {
11
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/);
12
+ if (!match) {
13
+ throw new ColynError(t('commands.release.invalidVersion', { version }), t('commands.release.invalidVersionHint'));
14
+ }
15
+ return {
16
+ major: parseInt(match[1]),
17
+ minor: parseInt(match[2]),
18
+ patch: parseInt(match[3])
19
+ };
20
+ }
21
+ /**
22
+ * 增加版本号
23
+ * @param currentVersion 当前版本,explicit version 时可为 null
24
+ */
25
+ export function bumpVersion(currentVersion, type) {
26
+ if (type === 'major' || type === 'minor' || type === 'patch') {
27
+ if (!currentVersion) {
28
+ return '1.0.0';
29
+ }
30
+ const ver = parseVersion(currentVersion);
31
+ if (type === 'major')
32
+ return `${ver.major + 1}.0.0`;
33
+ if (type === 'minor')
34
+ return `${ver.major}.${ver.minor + 1}.0`;
35
+ return `${ver.major}.${ver.minor}.${ver.patch + 1}`;
36
+ }
37
+ // 直接指定版本号
38
+ parseVersion(type); // 验证格式
39
+ return type;
40
+ }
41
+ /**
42
+ * 检查 git 工作区状态是否干净
43
+ */
44
+ export async function checkGitStatus(dir) {
45
+ const git = simpleGit(dir);
46
+ const status = await git.status();
47
+ // 检查是否有任何变更(除了 .env.local)
48
+ const hasChanges = status.files.length > 0;
49
+ return !hasChanges;
50
+ }
51
+ /**
52
+ * 获取当前分支
53
+ */
54
+ export async function getCurrentBranch(dir) {
55
+ const git = simpleGit(dir);
56
+ const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
57
+ return branch.trim();
58
+ }
59
+ /**
60
+ * 创建 git commit
61
+ * 暂存所有已修改文件(由 bumpVersion 写入),如无变更则跳过
62
+ * @returns true 表示已创建提交,false 表示无变更跳过
63
+ */
64
+ export async function createCommit(dir, message) {
65
+ const git = simpleGit(dir);
66
+ try {
67
+ await git.add('.');
68
+ const status = await git.status();
69
+ if (status.staged.length === 0) {
70
+ return false;
71
+ }
72
+ await git.commit(message);
73
+ return true;
74
+ }
75
+ catch (error) {
76
+ const errorMessage = error instanceof Error ? error.message : String(error);
77
+ throw new ColynError(t('commands.release.commitFailed'), t('commands.release.commitFailedHint', { error: errorMessage }));
78
+ }
79
+ }
80
+ /**
81
+ * 创建 git tag
82
+ */
83
+ export async function createTag(dir, tag, message) {
84
+ const git = simpleGit(dir);
85
+ try {
86
+ await git.tag(['-a', tag, '-m', message]);
87
+ }
88
+ catch (error) {
89
+ const errorMessage = error instanceof Error ? error.message : String(error);
90
+ throw new ColynError(t('commands.release.tagFailed'), t('commands.release.tagFailedHint', { error: errorMessage }));
91
+ }
92
+ }
93
+ /**
94
+ * 推送到远程仓库
95
+ */
96
+ export async function pushToRemote(dir, branch, tag) {
97
+ const git = simpleGit(dir);
98
+ try {
99
+ // 推送分支
100
+ await git.push('origin', branch);
101
+ outputInfo(t('commands.release.pushedBranch', { branch }));
102
+ // 如果有 tag,推送 tag
103
+ if (tag) {
104
+ await git.push('origin', tag);
105
+ outputInfo(t('commands.release.pushedTag', { tag }));
106
+ }
107
+ }
108
+ catch (error) {
109
+ const errorMessage = error instanceof Error ? error.message : String(error);
110
+ throw new ColynError(t('commands.release.pushFailed'), t('commands.release.pushFailedHint', { error: errorMessage }));
111
+ }
112
+ }
113
+ /**
114
+ * 执行发布流程
115
+ * @param projectRoot 项目根目录(.colyn 的父目录)
116
+ * @param dir 主分支目录路径
117
+ * @param versionType 版本类型或版本号
118
+ * @param verbose 是否输出详细信息
119
+ */
120
+ export async function executeRelease(projectRoot, dir, versionType, verbose = false) {
121
+ // 步骤 1: 检查 git 状态
122
+ outputLine();
123
+ outputBold(t('commands.release.step1'));
124
+ const isClean = await checkGitStatus(dir);
125
+ if (!isClean) {
126
+ throw new ColynError(t('commands.release.workingDirNotClean'), t('commands.release.workingDirNotCleanHint'));
127
+ }
128
+ outputSuccess(t('commands.release.workingDirClean'));
129
+ const currentBranch = await getCurrentBranch(dir);
130
+ outputInfo(t('commands.release.currentBranch', { branch: currentBranch }));
131
+ // 解析工具链上下文
132
+ const contexts = await resolveToolchains(projectRoot, dir);
133
+ // 步骤 2: 确定新版本号(通过插件读取当前版本)
134
+ outputLine();
135
+ outputBold(t('commands.release.step2'));
136
+ const currentVersion = contexts.length > 0
137
+ ? await pluginManager.runReadVersion(contexts[0].absolutePath, [contexts[0].toolchainName])
138
+ : null;
139
+ const newVersion = bumpVersion(currentVersion, versionType);
140
+ if (currentVersion !== null) {
141
+ outputInfo(t('commands.release.currentVersion', { version: currentVersion }));
142
+ outputSuccess(t('commands.release.newVersion', { old: currentVersion, new: newVersion }));
143
+ }
144
+ else {
145
+ outputSuccess(t('commands.release.targetVersion', { version: newVersion }));
146
+ }
147
+ // 步骤 3: 安装依赖(通过工具链插件)
148
+ if (contexts.length > 0) {
149
+ outputLine();
150
+ outputBold(t('commands.release.step3'));
151
+ outputInfo(t('commands.release.runningInstall'));
152
+ for (const ctx of contexts) {
153
+ await pluginManager.runInstall(ctx.absolutePath, [ctx.toolchainName], verbose);
154
+ }
155
+ outputSuccess(t('commands.release.installSucceeded'));
156
+ }
157
+ // 步骤 4: 运行 lint(通过工具链插件)
158
+ if (contexts.length > 0) {
159
+ outputLine();
160
+ outputBold(t('commands.release.step4'));
161
+ outputInfo(t('commands.release.runningLint'));
162
+ for (const ctx of contexts) {
163
+ await pluginManager.runLint(ctx.absolutePath, [ctx.toolchainName], verbose);
164
+ }
165
+ outputSuccess(t('commands.release.lintPassed'));
166
+ }
167
+ // 步骤 5: 运行 build(通过工具链插件)
168
+ if (contexts.length > 0) {
169
+ outputLine();
170
+ outputBold(t('commands.release.step5'));
171
+ outputInfo(t('commands.release.runningBuild'));
172
+ for (const ctx of contexts) {
173
+ await pluginManager.runBuild(ctx.absolutePath, [ctx.toolchainName], verbose);
174
+ }
175
+ outputSuccess(t('commands.release.buildSucceeded'));
176
+ }
177
+ // 步骤 6: 更新版本号(通过工具链插件)
178
+ if (contexts.length > 0) {
179
+ outputLine();
180
+ outputBold(t('commands.release.step6'));
181
+ for (const ctx of contexts) {
182
+ await pluginManager.runBumpVersion(ctx.absolutePath, newVersion, [ctx.toolchainName]);
183
+ }
184
+ outputSuccess(t('commands.release.versionUpdated', {
185
+ old: currentVersion ?? newVersion,
186
+ new: newVersion
187
+ }));
188
+ }
189
+ // 步骤 7: 创建 commit(如有版本文件变更)
190
+ outputLine();
191
+ outputBold(t('commands.release.step7'));
192
+ const commitMessage = `chore: release v${newVersion}`;
193
+ const committed = await createCommit(dir, commitMessage);
194
+ if (committed) {
195
+ outputSuccess(t('commands.release.commitCreated', { message: commitMessage }));
196
+ }
197
+ else {
198
+ outputInfo(t('commands.release.commitSkipped'));
199
+ }
200
+ // 步骤 8: 创建 tag
201
+ outputLine();
202
+ outputBold(t('commands.release.step8'));
203
+ const tagName = `v${newVersion}`;
204
+ const tagMessage = `Release v${newVersion}`;
205
+ await createTag(dir, tagName, tagMessage);
206
+ outputSuccess(t('commands.release.tagCreated', { tag: tagName }));
207
+ // 步骤 9: 推送到远程
208
+ outputLine();
209
+ outputBold(t('commands.release.step9'));
210
+ outputInfo(t('commands.release.pushing'));
211
+ await pushToRemote(dir, currentBranch, tagName);
212
+ outputSuccess(t('commands.release.pushSucceeded'));
213
+ // 步骤 10: 发布到包管理服务(通过工具链插件)
214
+ if (contexts.length > 0) {
215
+ outputLine();
216
+ outputBold(t('commands.release.step10'));
217
+ outputInfo(t('commands.release.runningPublish'));
218
+ outputInfo(t('commands.release.checkingPublishable'));
219
+ let publishedCount = 0;
220
+ let skippedCount = 0;
221
+ for (const ctx of contexts) {
222
+ const publishable = await pluginManager.runCheckPublishable(ctx.absolutePath, [ctx.toolchainName]);
223
+ if (!publishable) {
224
+ skippedCount += 1;
225
+ outputWarning(t('commands.release.publishSkippedForToolchain', {
226
+ toolchain: ctx.toolchainName,
227
+ path: ctx.subPath
228
+ }));
229
+ continue;
230
+ }
231
+ await pluginManager.runPublish(ctx.absolutePath, [ctx.toolchainName], verbose);
232
+ publishedCount += 1;
233
+ }
234
+ if (publishedCount === 0) {
235
+ outputWarning(t('commands.release.publishSkippedAll'));
236
+ }
237
+ else {
238
+ outputSuccess(t('commands.release.publishSucceeded'));
239
+ if (skippedCount > 0) {
240
+ outputWarning(t('commands.release.publishSkippedSummary', { count: skippedCount }));
241
+ }
242
+ }
243
+ }
244
+ return newVersion;
245
+ }
246
+ /**
247
+ * 显示发布成功信息
248
+ */
249
+ export function displayReleaseSuccess(version, branch) {
250
+ outputLine();
251
+ outputBold(t('commands.release.releaseComplete'));
252
+ outputLine();
253
+ outputBold(t('commands.release.releaseInfo'));
254
+ outputInfo(t('commands.release.releaseVersion', { version }));
255
+ outputInfo(t('commands.release.releaseBranch', { branch }));
256
+ outputInfo(t('commands.release.releaseTag', { tag: `v${version}` }));
257
+ outputLine();
258
+ outputBold(t('commands.release.nextSteps'));
259
+ outputStep(` ${t('commands.release.nextStep1')}`);
260
+ outputLine();
261
+ outputStep(` ${t('commands.release.nextStep2')}`);
262
+ outputLine();
263
+ outputStep(` ${t('commands.release.nextStep3')}`);
264
+ outputLine();
265
+ }
266
+ /**
267
+ * 显示回滚命令
268
+ */
269
+ export function displayRollbackCommands(version) {
270
+ outputLine();
271
+ outputBold(t('commands.release.rollbackHint'));
272
+ outputLine();
273
+ outputStep(` git tag -d v${version}`);
274
+ outputStep(` git reset --hard HEAD~1`);
275
+ outputLine();
276
+ }
277
+ //# sourceMappingURL=release.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.helpers.js","sourceRoot":"","sources":["../../src/commands/release.helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import simpleGit from 'simple-git';
2
+ import { getProjectPaths, validateProjectInitialized, executeInDirectory } from '../core/paths.js';
3
+ import { getMainBranch } from '../core/discovery.js';
4
+ import { getRelevantStatusFiles } from '../core/git.js';
5
+ import { ColynError } from '../types/index.js';
6
+ import { formatError, output } from '../utils/logger.js';
7
+ import { t } from '../i18n/index.js';
8
+ import { checkIsGitRepo } from './add.helpers.js';
9
+ import { executeUpdate } from './update.js';
10
+ import { checkBranchMerged } from './remove.helpers.js';
11
+ import { executeRelease, displayReleaseSuccess, displayRollbackCommands } from './release.helpers.js';
12
+ /**
13
+ * 检查当前目录是否有未提交的更改
14
+ */
15
+ async function checkCurrentDirClean(currentDir) {
16
+ const git = simpleGit(currentDir);
17
+ const status = await git.status();
18
+ const changedFiles = getRelevantStatusFiles(status);
19
+ if (changedFiles.length > 0) {
20
+ const filesStr = changedFiles.slice(0, 5).map(f => ` - ${f}`).join('\n') +
21
+ (changedFiles.length > 5 ? `\n ... ${t('commands.remove.moreFiles', { count: changedFiles.length - 5 })}` : '');
22
+ throw new ColynError(t('commands.release.currentDirNotClean'), t('commands.release.currentDirNotCleanHint', {
23
+ path: currentDir,
24
+ count: changedFiles.length,
25
+ files: filesStr
26
+ }));
27
+ }
28
+ }
29
+ /**
30
+ * 检查当前分支是否已合并到主分支(仅在 worktree 中执行时检查)
31
+ */
32
+ async function checkCurrentBranchMerged(currentDir, mainDir, worktreesDir) {
33
+ // 检查当前目录是否在 worktreesDir 中
34
+ if (!currentDir.startsWith(worktreesDir)) {
35
+ // 不在 worktree 中,无需检查
36
+ return;
37
+ }
38
+ // 获取当前分支
39
+ const git = simpleGit(currentDir);
40
+ const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
41
+ const currentBranch = branch.trim();
42
+ // 获取主分支名称
43
+ const mainBranch = await getMainBranch(mainDir);
44
+ // 如果当前分支就是主分支,无需检查
45
+ if (currentBranch === mainBranch) {
46
+ return;
47
+ }
48
+ // 检查分支是否已合并
49
+ const merged = await checkBranchMerged(mainDir, currentBranch);
50
+ if (!merged) {
51
+ throw new ColynError(t('commands.release.branchNotMerged', { branch: currentBranch, main: mainBranch }), t('commands.release.branchNotMergedHint', { branch: currentBranch, main: mainBranch }));
52
+ }
53
+ }
54
+ /**
55
+ * Release 命令:在 Main Branch 目录执行发布流程
56
+ */
57
+ async function releaseCommand(versionType, options) {
58
+ try {
59
+ // 如果未提供版本类型,默认使用 patch
60
+ const version = versionType || 'patch';
61
+ // 步骤1: 获取项目路径并验证
62
+ const paths = await getProjectPaths();
63
+ await validateProjectInitialized(paths);
64
+ // 步骤2: 获取当前工作目录
65
+ const currentDir = process.cwd();
66
+ const effectiveCurrentDir = currentDir === paths.rootDir ? paths.mainDir : currentDir;
67
+ // 步骤3: 检查当前目录是否有未提交的更改
68
+ await checkCurrentDirClean(effectiveCurrentDir);
69
+ // 步骤4: 检查当前分支是否已合并(仅在 worktree 中执行时)
70
+ await checkCurrentBranchMerged(effectiveCurrentDir, paths.mainDir, paths.worktreesDir);
71
+ // 步骤5: 检查主分支目录是否干净
72
+ if (effectiveCurrentDir !== paths.mainDir) {
73
+ await checkCurrentDirClean(paths.mainDir);
74
+ }
75
+ // 步骤6: 在主分支目录中检查 git 仓库
76
+ await executeInDirectory(paths.mainDir, async () => {
77
+ await checkIsGitRepo();
78
+ });
79
+ // 步骤7: 在主分支目录执行发布流程
80
+ let newVersion;
81
+ try {
82
+ newVersion = await executeRelease(paths.rootDir, paths.mainDir, version, options.verbose);
83
+ }
84
+ catch (error) {
85
+ // 如果发布失败,尝试回滚
86
+ if (error instanceof ColynError) {
87
+ // 显示回滚提示
88
+ displayRollbackCommands(version);
89
+ }
90
+ throw error;
91
+ }
92
+ // 步骤8: 发布成功后,自动更新所有 worktree(除非指定 --no-update)
93
+ if (!options.noUpdate) {
94
+ output(''); // 空行分隔
95
+ output(t('commands.release.updatingWorktrees'));
96
+ try {
97
+ await executeUpdate(undefined, { all: true });
98
+ }
99
+ catch (error) {
100
+ // update 失败不影响 release 的成功状态
101
+ output(t('commands.release.updateFailed'));
102
+ // 错误已经在 executeUpdate 中输出,这里不再重复输出
103
+ }
104
+ }
105
+ // 显示发布成功信息
106
+ const currentBranch = await getMainBranch(paths.mainDir);
107
+ displayReleaseSuccess(newVersion, currentBranch);
108
+ }
109
+ catch (error) {
110
+ formatError(error);
111
+ process.exit(1);
112
+ }
113
+ }
114
+ /**
115
+ * 注册 release 命令
116
+ */
117
+ export function register(program) {
118
+ program
119
+ .command('release [version]')
120
+ .description(t('commands.release.description'))
121
+ .option('--no-update', t('commands.release.noUpdateOption'))
122
+ .option('-v, --verbose', t('commands.release.verboseOption'))
123
+ .action(async (version, options) => {
124
+ await releaseCommand(version, options);
125
+ });
126
+ }
127
+ //# sourceMappingURL=release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * 注册 remove 命令
4
+ */
5
+ export declare function register(program: Command): void;
6
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8LzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU/C"}
@@ -0,0 +1,59 @@
1
+ import type { WorktreeInfo } from '../types/index.js';
2
+ /**
3
+ * 识别目标类型
4
+ */
5
+ export type TargetType = 'id' | 'branch' | 'auto';
6
+ /**
7
+ * 判断目标参数类型
8
+ */
9
+ export declare function identifyTargetType(target: string | undefined): TargetType;
10
+ /**
11
+ * 根据目标参数查找 worktree
12
+ */
13
+ export declare function findWorktreeTarget(target: string | undefined, mainDir: string, worktreesDir: string): Promise<WorktreeInfo>;
14
+ /**
15
+ * 检查 worktree 是否有未提交的更改
16
+ */
17
+ export declare function checkUncommittedChanges(worktreePath: string): Promise<{
18
+ hasChanges: boolean;
19
+ changedFiles: string[];
20
+ }>;
21
+ /**
22
+ * 检查分支是否已合并到主分支
23
+ */
24
+ export declare function checkBranchMerged(mainDir: string, branch: string): Promise<boolean>;
25
+ /**
26
+ * 检查当前目录是否在指定 worktree 内部
27
+ */
28
+ export declare function isCurrentDirInWorktree(worktreePath: string): boolean;
29
+ /**
30
+ * 执行 worktree 删除
31
+ */
32
+ export declare function executeWorktreeRemove(mainDir: string, worktreePath: string, force: boolean): Promise<{
33
+ success: boolean;
34
+ error?: string;
35
+ }>;
36
+ /**
37
+ * 删除本地分支
38
+ */
39
+ export declare function deleteLocalBranch(mainDir: string, branch: string, force: boolean): Promise<{
40
+ success: boolean;
41
+ error?: string;
42
+ }>;
43
+ /**
44
+ * 显示 worktree 信息
45
+ */
46
+ export declare function displayWorktreeInfo(worktree: WorktreeInfo): void;
47
+ /**
48
+ * 显示未提交更改警告
49
+ */
50
+ export declare function displayUncommittedChanges(changedFiles: string[]): void;
51
+ /**
52
+ * 显示未合并警告
53
+ */
54
+ export declare function displayUnmergedWarning(branch: string, mainBranch: string): void;
55
+ /**
56
+ * 显示删除成功信息
57
+ */
58
+ export declare function displayRemoveSuccess(worktree: WorktreeInfo, branchDeleted: boolean, switchedToMain: boolean, mainDir: string): void;
59
+ //# sourceMappingURL=remove.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.helpers.d.ts","sourceRoot":"","sources":["../../src/commands/remove.helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AActD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAYzE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CA4CvB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAU1D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQpE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB/C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAQhE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAWtE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAI/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CAiBN"}