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,374 @@
1
+ import * as path from 'path';
2
+ import chalk from 'chalk';
3
+ import simpleGit from 'simple-git';
4
+ import { getLocationInfo } from '../core/paths.js';
5
+ import { getWorktreeStatus } from '../core/worktree-status.js';
6
+ import { ColynError } from '../types/index.js';
7
+ import { output, formatError } from '../utils/logger.js';
8
+ import { t } from '../i18n/index.js';
9
+ /**
10
+ * 可用的字段名
11
+ */
12
+ const VALID_FIELDS = [
13
+ 'project',
14
+ 'project-path',
15
+ 'worktree-id',
16
+ 'worktree-dir',
17
+ 'worktree-path',
18
+ 'branch',
19
+ 'status',
20
+ 'last-updated-at',
21
+ ];
22
+ /**
23
+ * 格式化 ISO 时间为本地可读格式
24
+ */
25
+ function formatDate(isoString) {
26
+ const d = new Date(isoString);
27
+ const pad = (n) => String(n).padStart(2, '0');
28
+ return (`${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ` +
29
+ `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`);
30
+ }
31
+ /**
32
+ * 从 InfoData 获取字段值
33
+ */
34
+ function getFieldValue(info, field) {
35
+ switch (field) {
36
+ case 'project':
37
+ return info.project;
38
+ case 'project-path':
39
+ return info.projectPath;
40
+ case 'worktree-id':
41
+ return String(info.worktreeId);
42
+ case 'worktree-dir':
43
+ return info.worktreeDir;
44
+ case 'worktree-path':
45
+ return info.worktreePath;
46
+ case 'branch':
47
+ return info.branch;
48
+ case 'status':
49
+ return info.worktreeStatus;
50
+ case 'last-updated-at':
51
+ return info.statusUpdatedAt ?? '';
52
+ }
53
+ }
54
+ /**
55
+ * 验证字段名是否有效
56
+ */
57
+ function validateField(field) {
58
+ return VALID_FIELDS.includes(field);
59
+ }
60
+ /**
61
+ * 渲染模板字符串
62
+ */
63
+ function renderTemplate(template, info) {
64
+ return template.replace(/\{([^}]+)\}/g, (match, fieldName) => {
65
+ const trimmedField = fieldName.trim();
66
+ if (!validateField(trimmedField)) {
67
+ throw new ColynError(t('commands.info.invalidField', { field: trimmedField }), t('commands.info.invalidFieldHint', { fields: VALID_FIELDS.join(', ') }));
68
+ }
69
+ return getFieldValue(info, trimmedField);
70
+ });
71
+ }
72
+ /**
73
+ * 输出带颜色的完整信息
74
+ */
75
+ function printFullInfo(info) {
76
+ const labelWidth = 14;
77
+ const lines = [
78
+ {
79
+ icon: '📁',
80
+ label: t('commands.info.labelProject'),
81
+ value: chalk.cyan(info.project),
82
+ },
83
+ {
84
+ icon: '📂',
85
+ label: t('commands.info.labelProjectPath'),
86
+ value: chalk.gray(info.projectPath),
87
+ },
88
+ {
89
+ icon: '🔢',
90
+ label: t('commands.info.labelWorktreeId'),
91
+ value: info.worktreeId === 0
92
+ ? chalk.yellow(t('commands.info.mainIndicator'))
93
+ : chalk.green(String(info.worktreeId)),
94
+ },
95
+ {
96
+ icon: '📁',
97
+ label: t('commands.info.labelWorktreeDir'),
98
+ value: chalk.cyan(info.worktreeDir),
99
+ },
100
+ {
101
+ icon: '📂',
102
+ label: t('commands.info.labelWorktreePath'),
103
+ value: chalk.gray(info.worktreePath),
104
+ },
105
+ {
106
+ icon: '🌿',
107
+ label: t('commands.info.labelBranch'),
108
+ value: chalk.magenta(info.branch),
109
+ },
110
+ {
111
+ icon: '⚡',
112
+ label: t('commands.info.labelStatus'),
113
+ value: chalk.cyan(info.worktreeStatus),
114
+ },
115
+ {
116
+ icon: '📅',
117
+ label: t('commands.info.labelLastUpdatedAt'),
118
+ value: info.statusUpdatedAt
119
+ ? formatDate(info.statusUpdatedAt)
120
+ : chalk.gray(t('commands.info.statusNeverSet')),
121
+ },
122
+ ];
123
+ for (const line of lines) {
124
+ const paddedLabel = line.label.padEnd(labelWidth);
125
+ output(`${line.icon} ${paddedLabel}${line.value}`);
126
+ }
127
+ }
128
+ /**
129
+ * 输出降级后的基本信息(用于非 colyn 项目)
130
+ */
131
+ async function printFallbackInfo() {
132
+ const labelWidth = 14;
133
+ try {
134
+ // 尝试获取 git 信息
135
+ const gitRoot = await getGitRoot();
136
+ if (gitRoot) {
137
+ const git = simpleGit();
138
+ const branch = await git.branchLocal();
139
+ const repoName = path.basename(gitRoot);
140
+ const lines = [
141
+ {
142
+ icon: '📁',
143
+ label: t('commands.info.labelRepository'),
144
+ value: chalk.cyan(repoName),
145
+ },
146
+ {
147
+ icon: '📂',
148
+ label: t('commands.info.labelRepositoryPath'),
149
+ value: chalk.gray(gitRoot),
150
+ },
151
+ {
152
+ icon: '🌿',
153
+ label: t('commands.info.labelBranch'),
154
+ value: chalk.magenta(branch.current ?? 'unknown'),
155
+ },
156
+ ];
157
+ for (const line of lines) {
158
+ const paddedLabel = line.label.padEnd(labelWidth);
159
+ output(`${line.icon} ${paddedLabel}${line.value}`);
160
+ }
161
+ return;
162
+ }
163
+ }
164
+ catch {
165
+ // 忽略 git 错误,继续降级到目录信息
166
+ }
167
+ // 非 git 目录,显示当前目录信息
168
+ const cwd = process.cwd();
169
+ const dirName = path.basename(cwd);
170
+ const lines = [
171
+ {
172
+ icon: '📁',
173
+ label: t('commands.info.labelDirectory'),
174
+ value: chalk.cyan(dirName),
175
+ },
176
+ {
177
+ icon: '📂',
178
+ label: t('commands.info.labelDirectoryPath'),
179
+ value: chalk.gray(cwd),
180
+ },
181
+ ];
182
+ for (const line of lines) {
183
+ const paddedLabel = line.label.padEnd(labelWidth);
184
+ output(`${line.icon} ${paddedLabel}${line.value}`);
185
+ }
186
+ }
187
+ /**
188
+ * 获取 git 仓库根目录
189
+ */
190
+ async function getGitRoot() {
191
+ try {
192
+ const git = simpleGit();
193
+ const root = await git.revparse(['--show-toplevel']);
194
+ return root.trim();
195
+ }
196
+ catch {
197
+ return null;
198
+ }
199
+ }
200
+ /**
201
+ * 获取简短标识符(带降级策略)
202
+ */
203
+ async function getShortId() {
204
+ try {
205
+ // 1. 尝试获取 colyn 信息
206
+ const info = await getLocationInfo();
207
+ // 格式: project/worktreeDir (⎇ branch)
208
+ // 颜色: cyan / gray / yellow ( gray ⎇ magenta )
209
+ return (chalk.cyan(info.project) +
210
+ chalk.gray('/') +
211
+ chalk.yellow(info.worktreeDir) +
212
+ ' ' +
213
+ chalk.gray('(') +
214
+ chalk.gray('⎇ ') +
215
+ chalk.magenta(info.branch) +
216
+ chalk.gray(')'));
217
+ }
218
+ catch {
219
+ try {
220
+ // 2. 尝试获取 git 仓库名和分支
221
+ const gitRoot = await getGitRoot();
222
+ if (gitRoot) {
223
+ const git = simpleGit();
224
+ const branch = await git.branchLocal();
225
+ const repoName = path.basename(gitRoot);
226
+ // 格式: repoName (⎇ branch)
227
+ // 颜色: cyan ( gray ⎇ magenta )
228
+ return (chalk.cyan(repoName) +
229
+ ' ' +
230
+ chalk.gray('(') +
231
+ chalk.gray('⎇ ') +
232
+ chalk.magenta(branch.current) +
233
+ chalk.gray(')'));
234
+ }
235
+ }
236
+ catch {
237
+ // 忽略 git 错误,继续降级
238
+ }
239
+ // 3. 使用当前目录名
240
+ return chalk.cyan(path.basename(process.cwd()));
241
+ }
242
+ }
243
+ /**
244
+ * info 命令主函数
245
+ */
246
+ async function infoCommand(options) {
247
+ try {
248
+ // 处理 --short 参数(优先级最高)
249
+ if (options.short) {
250
+ const shortId = await getShortId();
251
+ process.stdout.write(shortId + '\n');
252
+ return;
253
+ }
254
+ // 尝试获取当前位置信息
255
+ let locationInfo = null;
256
+ try {
257
+ locationInfo = await getLocationInfo();
258
+ }
259
+ catch {
260
+ // 如果获取失败,检查是否有需要 colyn 信息的选项
261
+ if (options.format || options.field) {
262
+ // --format 和 --field 需要 colyn 项目信息
263
+ throw new ColynError(t('commands.info.notColynProject'), t('commands.info.notColynProjectHint'));
264
+ }
265
+ // 无参数时使用降级显示
266
+ locationInfo = null;
267
+ }
268
+ // 如果是 colyn 项目,继续处理其他选项
269
+ if (locationInfo) {
270
+ // 获取工作流状态
271
+ const configDir = path.join(locationInfo.projectPath, '.colyn');
272
+ const effectiveDir = locationInfo.isMainBranch ? 'main' : locationInfo.worktreeDir;
273
+ const statusResult = await getWorktreeStatus(configDir, effectiveDir);
274
+ const info = {
275
+ ...locationInfo,
276
+ worktreeStatus: statusResult.status,
277
+ statusUpdatedAt: statusResult.updatedAt,
278
+ };
279
+ // 处理 --format 参数
280
+ if (options.format) {
281
+ const rendered = renderTemplate(options.format, info);
282
+ // 直接输出到 stdout,用于脚本使用
283
+ process.stdout.write(rendered + '\n');
284
+ return;
285
+ }
286
+ // 处理 --field 参数
287
+ if (options.field && options.field.length > 0) {
288
+ // 验证所有字段
289
+ for (const field of options.field) {
290
+ if (!validateField(field)) {
291
+ throw new ColynError(t('commands.info.invalidField', { field }), t('commands.info.invalidFieldHint', { fields: VALID_FIELDS.join(', ') }));
292
+ }
293
+ }
294
+ // 获取字段值
295
+ const values = options.field.map((field) => getFieldValue(info, field));
296
+ // 使用分隔符连接输出
297
+ const separator = options.separator ?? '\t';
298
+ process.stdout.write(values.join(separator) + '\n');
299
+ return;
300
+ }
301
+ // 无参数,显示完整信息
302
+ printFullInfo(info);
303
+ }
304
+ else {
305
+ // 非 colyn 项目,显示降级信息
306
+ await printFallbackInfo();
307
+ }
308
+ }
309
+ catch (error) {
310
+ if (error instanceof ColynError) {
311
+ formatError(error);
312
+ process.exit(1);
313
+ }
314
+ throw error;
315
+ }
316
+ }
317
+ /**
318
+ * 注册 info 命令
319
+ */
320
+ export function register(program) {
321
+ const cmd = program
322
+ .command('info')
323
+ .description(t('commands.info.description'))
324
+ .option('-S, --short', t('commands.info.shortOption'))
325
+ .option('-f, --field <name>', t('commands.info.fieldOption'), (value, previous) => {
326
+ return previous.concat([value]);
327
+ }, [])
328
+ .option('--format <template>', t('commands.info.formatOption'))
329
+ .option('-s, --separator <char>', t('commands.info.separatorOption'))
330
+ .action(async (options) => {
331
+ await infoCommand(options);
332
+ });
333
+ // 添加详细的帮助信息
334
+ cmd.addHelpText('after', `
335
+
336
+ 可用字段:
337
+ project 项目名称
338
+ project-path 项目根目录路径
339
+ worktree-id Worktree ID(主分支为 0)
340
+ worktree-dir Worktree 目录名
341
+ worktree-path Worktree 目录完整路径
342
+ branch 当前分支名
343
+ status 工作流状态(idle/running/waiting-confirm/finish)
344
+ last-updated-at 状态最后更新时间(ISO 8601 格式,未设置时为空)
345
+
346
+ 使用示例:
347
+ # 在 colyn 项目中显示完整信息(默认)
348
+ $ colyn info
349
+ 📁 Project: my-project
350
+ 📂 Project Path: /path/to/my-project
351
+ 🔢 Worktree ID: 1
352
+ 📁 Worktree Dir: task-1
353
+ 🌿 Branch: feature/login
354
+ ⚡ Status: running
355
+ 📅 Last Updated: 2026-02-22 13:22:04
356
+
357
+ # 输出简短标识符(带分支信息)
358
+ $ colyn info --short
359
+ my-project/task-1 (⎇ feature/login)
360
+
361
+ # 获取状态字段
362
+ $ colyn info -f status
363
+ running
364
+
365
+ # 获取多个字段
366
+ $ colyn info -f worktree-id -f status
367
+ 1 running
368
+
369
+ # 使用模板格式化输出
370
+ $ colyn info --format "Worktree {worktree-id}: {branch} [{status}]"
371
+ Worktree 1: feature/login [running]
372
+ `);
373
+ }
374
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * 注册 init 命令
4
+ */
5
+ export declare function register(program: Command): void;
6
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6DzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS/C"}
@@ -0,0 +1,27 @@
1
+ import { type DirectoryInfo } from '../types/index.js';
2
+ /**
3
+ * 处理结果接口
4
+ */
5
+ export interface InitHandlerResult {
6
+ mainDirPath: string;
7
+ mainDirName: string;
8
+ }
9
+ /**
10
+ * 处理空目录情况
11
+ */
12
+ export declare function handleEmptyDirectory(dirInfo: DirectoryInfo, options: {
13
+ port?: string;
14
+ }): Promise<InitHandlerResult>;
15
+ /**
16
+ * 处理已初始化目录情况
17
+ */
18
+ export declare function handleInitializedDirectory(dirInfo: DirectoryInfo, options: {
19
+ port?: string;
20
+ }): Promise<InitHandlerResult>;
21
+ /**
22
+ * 处理已有项目情况
23
+ */
24
+ export declare function handleExistingProject(dirInfo: DirectoryInfo, options: {
25
+ port?: string;
26
+ }, skipConfirm?: boolean): Promise<InitHandlerResult | null>;
27
+ //# sourceMappingURL=init.handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.handlers.d.ts","sourceRoot":"","sources":["../../src/commands/init.handlers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAiCnE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAiLD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAqC5B;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAmF5B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAuFnC"}