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.
- package/README-en.md +85 -0
- package/README.md +85 -0
- package/bin/colyn +25 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +116 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +6 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.helpers.d.ts +48 -0
- package/dist/commands/add.helpers.d.ts.map +1 -0
- package/dist/commands/add.helpers.js +251 -0
- package/dist/commands/add.helpers.js.map +1 -0
- package/dist/commands/add.js +286 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/checkout.d.ts +16 -0
- package/dist/commands/checkout.d.ts.map +1 -0
- package/dist/commands/checkout.js +428 -0
- package/dist/commands/checkout.js.map +1 -0
- package/dist/commands/completion.d.ts +10 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +380 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +338 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +41 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/info.d.ts +6 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +374 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.handlers.d.ts +27 -0
- package/dist/commands/init.handlers.d.ts.map +1 -0
- package/dist/commands/init.handlers.js +314 -0
- package/dist/commands/init.handlers.js.map +1 -0
- package/dist/commands/init.helpers.d.ts +42 -0
- package/dist/commands/init.helpers.d.ts.map +1 -0
- package/dist/commands/init.helpers.js +275 -0
- package/dist/commands/init.helpers.js.map +1 -0
- package/dist/commands/init.js +61 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +6 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.helpers.d.ts +32 -0
- package/dist/commands/install.helpers.d.ts.map +1 -0
- package/dist/commands/install.helpers.js +124 -0
- package/dist/commands/install.helpers.js.map +1 -0
- package/dist/commands/install.js +104 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list-project.d.ts +11 -0
- package/dist/commands/list-project.d.ts.map +1 -0
- package/dist/commands/list-project.js +260 -0
- package/dist/commands/list-project.js.map +1 -0
- package/dist/commands/list.d.ts +15 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.helpers.d.ts +50 -0
- package/dist/commands/list.helpers.d.ts.map +1 -0
- package/dist/commands/list.helpers.js +143 -0
- package/dist/commands/list.helpers.js.map +1 -0
- package/dist/commands/list.js +530 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/merge.d.ts +6 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.helpers.d.ts +74 -0
- package/dist/commands/merge.helpers.d.ts.map +1 -0
- package/dist/commands/merge.helpers.js +307 -0
- package/dist/commands/merge.helpers.js.map +1 -0
- package/dist/commands/merge.js +260 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/release.d.ts +6 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.helpers.d.ts +61 -0
- package/dist/commands/release.helpers.d.ts.map +1 -0
- package/dist/commands/release.helpers.js +277 -0
- package/dist/commands/release.helpers.js.map +1 -0
- package/dist/commands/release.js +127 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/remove.d.ts +6 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.helpers.d.ts +59 -0
- package/dist/commands/remove.helpers.d.ts.map +1 -0
- package/dist/commands/remove.helpers.js +190 -0
- package/dist/commands/remove.helpers.js.map +1 -0
- package/dist/commands/remove.js +137 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/repair.d.ts +6 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.helpers.d.ts +5 -0
- package/dist/commands/repair.helpers.d.ts.map +1 -0
- package/dist/commands/repair.helpers.js +499 -0
- package/dist/commands/repair.helpers.js.map +1 -0
- package/dist/commands/repair.js +28 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +116 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/system-integration.d.ts +6 -0
- package/dist/commands/system-integration.d.ts.map +1 -0
- package/dist/commands/system-integration.helpers.d.ts +70 -0
- package/dist/commands/system-integration.helpers.d.ts.map +1 -0
- package/dist/commands/system-integration.helpers.js +313 -0
- package/dist/commands/system-integration.helpers.js.map +1 -0
- package/dist/commands/system-integration.js +132 -0
- package/dist/commands/system-integration.js.map +1 -0
- package/dist/commands/tmux.d.ts +11 -0
- package/dist/commands/tmux.d.ts.map +1 -0
- package/dist/commands/tmux.js +500 -0
- package/dist/commands/tmux.js.map +1 -0
- package/dist/commands/todo.d.ts +6 -0
- package/dist/commands/todo.d.ts.map +1 -0
- package/dist/commands/todo.helpers.d.ts +50 -0
- package/dist/commands/todo.helpers.d.ts.map +1 -0
- package/dist/commands/todo.helpers.js +297 -0
- package/dist/commands/todo.helpers.js.map +1 -0
- package/dist/commands/todo.js +579 -0
- package/dist/commands/todo.js.map +1 -0
- package/dist/commands/update.d.ts +18 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.helpers.d.ts +89 -0
- package/dist/commands/update.helpers.d.ts.map +1 -0
- package/dist/commands/update.helpers.js +335 -0
- package/dist/commands/update.helpers.js.map +1 -0
- package/dist/commands/update.js +187 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/core/config-loader.d.ts +47 -0
- package/dist/core/config-loader.d.ts.map +1 -0
- package/dist/core/config-loader.js +188 -0
- package/dist/core/config-loader.js.map +1 -0
- package/dist/core/config-merger.d.ts +29 -0
- package/dist/core/config-merger.d.ts.map +1 -0
- package/dist/core/config-merger.js +100 -0
- package/dist/core/config-merger.js.map +1 -0
- package/dist/core/config-migration.d.ts +64 -0
- package/dist/core/config-migration.d.ts.map +1 -0
- package/dist/core/config-migration.js +340 -0
- package/dist/core/config-migration.js.map +1 -0
- package/dist/core/config-new.d.ts +19 -0
- package/dist/core/config-new.d.ts.map +1 -0
- package/dist/core/config-new.js +58 -0
- package/dist/core/config-new.js.map +1 -0
- package/dist/core/config-schema.d.ts +221 -0
- package/dist/core/config-schema.d.ts.map +1 -0
- package/dist/core/config-schema.js +168 -0
- package/dist/core/config-schema.js.map +1 -0
- package/dist/core/config.d.ts +55 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +143 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/dev-server.d.ts +29 -0
- package/dist/core/dev-server.d.ts.map +1 -0
- package/dist/core/dev-server.js +54 -0
- package/dist/core/dev-server.js.map +1 -0
- package/dist/core/discovery.d.ts +51 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +247 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/env.d.ts +13 -0
- package/dist/core/env.d.ts.map +1 -0
- package/dist/core/env.js +75 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/git.d.ts +31 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +56 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/paths.d.ts +86 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +256 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/tmux-config.d.ts +174 -0
- package/dist/core/tmux-config.d.ts.map +1 -0
- package/dist/core/tmux-config.js +545 -0
- package/dist/core/tmux-config.js.map +1 -0
- package/dist/core/tmux-config.legacy.d.ts +243 -0
- package/dist/core/tmux-config.legacy.d.ts.map +1 -0
- package/dist/core/tmux-config.legacy.js +896 -0
- package/dist/core/tmux-config.legacy.js.map +1 -0
- package/dist/core/tmux.d.ts +214 -0
- package/dist/core/tmux.d.ts.map +1 -0
- package/dist/core/tmux.js +712 -0
- package/dist/core/tmux.js.map +1 -0
- package/dist/core/toolchain-resolver.d.ts +51 -0
- package/dist/core/toolchain-resolver.d.ts.map +1 -0
- package/dist/core/toolchain-resolver.js +364 -0
- package/dist/core/toolchain-resolver.js.map +1 -0
- package/dist/core/worktree-status.d.ts +20 -0
- package/dist/core/worktree-status.d.ts.map +1 -0
- package/dist/core/worktree-status.js +67 -0
- package/dist/core/worktree-status.js.map +1 -0
- package/dist/i18n/index.d.ts +36 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +157 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +866 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +985 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/zh-CN.d.ts +865 -0
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
- package/dist/i18n/locales/zh-CN.js +985 -0
- package/dist/i18n/locales/zh-CN.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/builtin/gradle.d.ts +9 -0
- package/dist/plugins/builtin/gradle.d.ts.map +1 -0
- package/dist/plugins/builtin/gradle.js +164 -0
- package/dist/plugins/builtin/gradle.js.map +1 -0
- package/dist/plugins/builtin/maven.d.ts +9 -0
- package/dist/plugins/builtin/maven.d.ts.map +1 -0
- package/dist/plugins/builtin/maven.js +127 -0
- package/dist/plugins/builtin/maven.js.map +1 -0
- package/dist/plugins/builtin/npm.d.ts +9 -0
- package/dist/plugins/builtin/npm.d.ts.map +1 -0
- package/dist/plugins/builtin/npm.js +238 -0
- package/dist/plugins/builtin/npm.js.map +1 -0
- package/dist/plugins/builtin/pip.d.ts +9 -0
- package/dist/plugins/builtin/pip.d.ts.map +1 -0
- package/dist/plugins/builtin/pip.js +210 -0
- package/dist/plugins/builtin/pip.js.map +1 -0
- package/dist/plugins/builtin/xcode.d.ts +12 -0
- package/dist/plugins/builtin/xcode.d.ts.map +1 -0
- package/dist/plugins/builtin/xcode.js +438 -0
- package/dist/plugins/builtin/xcode.js.map +1 -0
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +24 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/manager.d.ts +93 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +270 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/utils.d.ts +42 -0
- package/dist/plugins/utils.d.ts.map +1 -0
- package/dist/plugins/utils.js +175 -0
- package/dist/plugins/utils.js.map +1 -0
- package/dist/types/index.d.ts +104 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +200 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +19 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +80 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/en/manual/04-command-reference/README.md +58 -0
- package/docs/en/manual/README.md +108 -0
- package/docs/zh-CN/manual/04-command-reference/README.md +58 -0
- package/docs/zh-CN/manual/README.md +108 -0
- package/package.json +65 -0
- package/shell/colyn.sh +55 -0
- package/shell/completion.bash +270 -0
- package/shell/completion.zsh +167 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具链插件类型定义
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* repairSettings 的上下文对象
|
|
6
|
+
*
|
|
7
|
+
* 在 colyn init / colyn repair 时传入各插件的 repairSettings 方法。
|
|
8
|
+
*/
|
|
9
|
+
export interface RepairSettingsContext {
|
|
10
|
+
/** 项目根目录(.colyn 的父目录) */
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
/** 主分支目录路径(包含项目代码文件) */
|
|
13
|
+
worktreePath: string;
|
|
14
|
+
/** 当前已保存的工具链专属配置(来自 settings.toolchain.settings 或 projects[i].toolchain.settings) */
|
|
15
|
+
currentSettings: Record<string, unknown>;
|
|
16
|
+
/** 是否处于非交互式模式(如 CI 环境,不能弹出交互提问) */
|
|
17
|
+
nonInteractive: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 插件命令执行失败时抛出的异常
|
|
21
|
+
*
|
|
22
|
+
* lint / build / install / publish / init 失败时插件必须抛出此类型,
|
|
23
|
+
* 以便 PluginManager 在 verbose 模式下将命令输出展示给用户。
|
|
24
|
+
*/
|
|
25
|
+
export declare class PluginCommandError extends Error {
|
|
26
|
+
/** 失败命令的完整输出(stdout + stderr) */
|
|
27
|
+
readonly output: string;
|
|
28
|
+
constructor(message: string, output: string);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 端口分配配置
|
|
32
|
+
* null 表示该工具链不需要端口(如库项目、CLI 工具)
|
|
33
|
+
*/
|
|
34
|
+
export interface PortConfig {
|
|
35
|
+
/** 配置文件中的键名,如 "PORT"、"server.port" */
|
|
36
|
+
key: string;
|
|
37
|
+
/** 默认端口号 */
|
|
38
|
+
defaultPort: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 工具链插件接口
|
|
42
|
+
*
|
|
43
|
+
* 所有方法均为可选,插件只需实现其关心的扩展点。
|
|
44
|
+
* 未实现的扩展点由 colyn 核心跳过或使用默认行为。
|
|
45
|
+
*/
|
|
46
|
+
export interface ToolchainPlugin {
|
|
47
|
+
/** 插件唯一标识符,如 'npm' | 'maven' | 'gradle' | 'pip' */
|
|
48
|
+
name: string;
|
|
49
|
+
/** 用于界面展示的名称,如 'Node.js (npm)' */
|
|
50
|
+
displayName: string;
|
|
51
|
+
/**
|
|
52
|
+
* 检测项目是否使用此工具链
|
|
53
|
+
*
|
|
54
|
+
* 通常通过扫描项目特定文件(package.json / pom.xml 等)判断。
|
|
55
|
+
*
|
|
56
|
+
* @param worktreePath 执行检测的目录路径
|
|
57
|
+
* @returns true 表示匹配,false 表示不匹配
|
|
58
|
+
*/
|
|
59
|
+
detect(worktreePath: string): boolean | Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* 返回端口分配配置
|
|
62
|
+
*
|
|
63
|
+
* 返回 null 表示该工具链不需要端口(如库项目)。
|
|
64
|
+
* colyn 根据返回值决定是否为该插件分配 worktree 端口。
|
|
65
|
+
*/
|
|
66
|
+
portConfig?(): PortConfig | null;
|
|
67
|
+
/**
|
|
68
|
+
* 读取配置文件,返回统一键值对
|
|
69
|
+
*
|
|
70
|
+
* 执行策略:按插件注册顺序依次尝试,第一个返回非 null 的结果生效。
|
|
71
|
+
* 插件自行决定从 worktreePath 下的哪个文件读取(如 .env.local)。
|
|
72
|
+
*
|
|
73
|
+
* @param worktreePath worktree 目录路径
|
|
74
|
+
* @returns 键值对,或 null 表示读取失败(文件不存在或格式不支持)
|
|
75
|
+
*/
|
|
76
|
+
readRuntimeConfig?(worktreePath: string): Promise<Record<string, string> | null>;
|
|
77
|
+
/**
|
|
78
|
+
* 将键值对写入配置文件(支持原生格式)
|
|
79
|
+
*
|
|
80
|
+
* @param worktreePath worktree 目录路径(由插件自行决定写入哪个配置文件)
|
|
81
|
+
* @param config 要写入的键值对
|
|
82
|
+
*/
|
|
83
|
+
writeRuntimeConfig?(worktreePath: string, config: Record<string, string>): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* 返回 dev server 启动命令
|
|
86
|
+
*
|
|
87
|
+
* 供 terminal session 插件调用,以便在终端中自动启动 dev server。
|
|
88
|
+
* 工具链插件只负责返回命令,不负责执行。
|
|
89
|
+
*
|
|
90
|
+
* @param worktreePath 执行命令检测的目录路径
|
|
91
|
+
* @returns 命令数组(如 ['npm', 'run', 'dev']),或 null 表示无 dev server
|
|
92
|
+
*/
|
|
93
|
+
devServerCommand?(worktreePath: string): string[] | null | Promise<string[] | null>;
|
|
94
|
+
/**
|
|
95
|
+
* 返回运行时配置文件名
|
|
96
|
+
*
|
|
97
|
+
* colyn 会确保该文件名被添加到 .gitignore。
|
|
98
|
+
* 返回 null 表示该工具链无运行时配置文件需要忽略。
|
|
99
|
+
*
|
|
100
|
+
* @returns 文件名(如 '.env.local'、'application-local.properties'),或 null
|
|
101
|
+
*/
|
|
102
|
+
getRuntimeConfigFileName?(): string | null;
|
|
103
|
+
/**
|
|
104
|
+
* 检查并修复插件专属项目配置
|
|
105
|
+
*
|
|
106
|
+
* 在 `colyn init` 和 `colyn repair` 时调用。
|
|
107
|
+
* 插件应扫描项目结构,识别必要的配置项(如 Xcode 的 scheme / destination)。
|
|
108
|
+
* 如果无法自动确定,可通过交互式提问让用户填写。
|
|
109
|
+
* 结果由 colyn 保存到 `.colyn/settings.json` 的 `toolchain.settings` 或 `projects[i].toolchain.settings` 字段。
|
|
110
|
+
*
|
|
111
|
+
* **典型用途**:Xcode 插件通过此方法询问用户 scheme 和 destination,
|
|
112
|
+
* 供后续 `build` 命令使用。
|
|
113
|
+
*
|
|
114
|
+
* @param context 包含 worktreePath、当前已保存工具链配置、非交互模式标志
|
|
115
|
+
* @returns 工具链专属配置键值对(将完整覆盖对应 toolchain.settings)
|
|
116
|
+
*/
|
|
117
|
+
repairSettings?(context: RepairSettingsContext): Promise<Record<string, unknown>>;
|
|
118
|
+
/**
|
|
119
|
+
* 安装项目依赖
|
|
120
|
+
*
|
|
121
|
+
* 触发场景:
|
|
122
|
+
* - `colyn add` 后:在新建 worktree 目录下安装依赖
|
|
123
|
+
* - `colyn release` 前:在主分支目录下安装依赖,确保依赖最新
|
|
124
|
+
*
|
|
125
|
+
* @param worktreePath 执行安装的目录路径(worktree 或主分支目录)
|
|
126
|
+
* @throws {PluginCommandError} 安装失败时,output 包含命令输出
|
|
127
|
+
*/
|
|
128
|
+
install?(worktreePath: string): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* 执行代码质量检查
|
|
131
|
+
*
|
|
132
|
+
* 触发时机:`colyn merge` 前(预检)和 `colyn release` 前
|
|
133
|
+
*
|
|
134
|
+
* **缺失处理**:如果工具链没有 lint 脚本,插件应**静默跳过**(不抛出异常)。
|
|
135
|
+
*
|
|
136
|
+
* @param worktreePath 执行检查的目录路径
|
|
137
|
+
* @throws {PluginCommandError} lint 失败时,output 包含命令输出
|
|
138
|
+
*/
|
|
139
|
+
lint?(worktreePath: string): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* 构建项目
|
|
142
|
+
*
|
|
143
|
+
* 在 `colyn release` 时调用。不实现则跳过。
|
|
144
|
+
*
|
|
145
|
+
* **缺失处理**:如果工具链没有 build 脚本,插件应**静默跳过**(不抛出异常)。
|
|
146
|
+
*
|
|
147
|
+
* @param worktreePath 执行构建的目录路径
|
|
148
|
+
* @throws {PluginCommandError} build 失败时,output 包含命令输出
|
|
149
|
+
*/
|
|
150
|
+
build?(worktreePath: string): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* 读取项目当前版本号
|
|
153
|
+
*
|
|
154
|
+
* 在 `colyn release` 时调用,用于确定基础版本以计算 major/minor/patch 增量。
|
|
155
|
+
* 未实现则视为版本不可读(用户需提供完整版本号)。
|
|
156
|
+
*
|
|
157
|
+
* @param worktreePath 执行读取的目录路径
|
|
158
|
+
* @returns 版本号字符串(如 "1.2.0"),或 null 表示无法读取
|
|
159
|
+
*/
|
|
160
|
+
readVersion?(worktreePath: string): Promise<string | null>;
|
|
161
|
+
/**
|
|
162
|
+
* 更新项目版本号
|
|
163
|
+
*
|
|
164
|
+
* 在 `colyn release` 时调用。
|
|
165
|
+
*
|
|
166
|
+
* **缺失处理**:已激活插件若未实现此方法,PluginManager 报错终止 release。
|
|
167
|
+
*
|
|
168
|
+
* @param worktreePath 执行版本更新的目录路径
|
|
169
|
+
* @param version 新版本号(如 "1.2.0")
|
|
170
|
+
*/
|
|
171
|
+
bumpVersion?(worktreePath: string, version: string): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* 发布到包管理服务
|
|
174
|
+
*
|
|
175
|
+
* 在 `colyn release` 完成 push 后调用。
|
|
176
|
+
* 由各插件执行对应的发布命令:
|
|
177
|
+
* - npm: publish 到 npmjs.com
|
|
178
|
+
* - maven/gradle: publish 到配置的仓库
|
|
179
|
+
* - pip: publish 到配置的 Python 包仓库
|
|
180
|
+
* - xcode: 视项目类型执行对应发布动作(或静默跳过)
|
|
181
|
+
*
|
|
182
|
+
* **缺失处理**:未实现则跳过。
|
|
183
|
+
*
|
|
184
|
+
* @param worktreePath 执行发布的目录路径
|
|
185
|
+
* @throws {PluginCommandError} 发布失败时,output 包含命令输出
|
|
186
|
+
*/
|
|
187
|
+
publish?(worktreePath: string): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* 检查当前项目是否满足发布条件
|
|
190
|
+
*
|
|
191
|
+
* 在 `colyn release` 的发布阶段前调用。
|
|
192
|
+
* 返回 false 表示当前工具链在该目录下不应执行发布(例如 npm private 包)。
|
|
193
|
+
*
|
|
194
|
+
* **缺失处理**:未实现时,默认视为可发布。
|
|
195
|
+
*
|
|
196
|
+
* @param worktreePath 执行检查的目录路径
|
|
197
|
+
*/
|
|
198
|
+
checkPublishable?(worktreePath: string): Promise<boolean>;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,mCAAmC;IACnC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAK9B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IAMpB;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAMzD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC;IAEjC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjF;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAMzF;;;;;;;;OAQG;IACH,gBAAgB,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAMpF;;;;;;;OAOG;IACH,wBAAwB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;IAE3C;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAMlF;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;;;;;OASG;IACH,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;;;;;;OAQG;IACH,WAAW,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;;;;;;OASG;IACH,WAAW,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;;;;;OASG;IACH,gBAAgB,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具链插件类型定义
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 插件命令执行失败时抛出的异常
|
|
6
|
+
*
|
|
7
|
+
* lint / build / install / publish / init 失败时插件必须抛出此类型,
|
|
8
|
+
* 以便 PluginManager 在 verbose 模式下将命令输出展示给用户。
|
|
9
|
+
*/
|
|
10
|
+
export class PluginCommandError extends Error {
|
|
11
|
+
/** 失败命令的完整输出(stdout + stderr) */
|
|
12
|
+
output;
|
|
13
|
+
constructor(message, output) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'PluginCommandError';
|
|
16
|
+
this.output = output;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,iCAAiC;IACxB,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,MAAc;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CommandResult } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 输出到 stderr(彩色,给用户看)
|
|
4
|
+
*/
|
|
5
|
+
export declare function output(message: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* 输出空行到 stderr
|
|
8
|
+
*/
|
|
9
|
+
export declare function outputLine(): void;
|
|
10
|
+
/**
|
|
11
|
+
* 输出成功信息到 stderr
|
|
12
|
+
*/
|
|
13
|
+
export declare function outputSuccess(message: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* 输出错误信息到 stderr
|
|
16
|
+
*/
|
|
17
|
+
export declare function outputError(message: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* 输出警告信息到 stderr
|
|
20
|
+
*/
|
|
21
|
+
export declare function outputWarning(message: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* 输出普通信息到 stderr
|
|
24
|
+
*/
|
|
25
|
+
export declare function outputInfo(message: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* 输出高亮信息到 stderr
|
|
28
|
+
*/
|
|
29
|
+
export declare function outputBold(message: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* 输出提示步骤到 stderr
|
|
32
|
+
*/
|
|
33
|
+
export declare function outputStep(message: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* 输出命令结果到 stdout(JSON 格式,给 bash 解析)
|
|
36
|
+
*/
|
|
37
|
+
export declare function outputResult(result: CommandResult): void;
|
|
38
|
+
/**
|
|
39
|
+
* 格式化并显示错误到 stderr
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatError(error: unknown): void;
|
|
42
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG9D;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAWhD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { ColynError } from '../types/index.js';
|
|
3
|
+
import { t } from '../i18n/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* 输出到 stderr(彩色,给用户看)
|
|
6
|
+
*/
|
|
7
|
+
export function output(message) {
|
|
8
|
+
process.stderr.write(message + '\n');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 输出空行到 stderr
|
|
12
|
+
*/
|
|
13
|
+
export function outputLine() {
|
|
14
|
+
process.stderr.write('\n');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 输出成功信息到 stderr
|
|
18
|
+
*/
|
|
19
|
+
export function outputSuccess(message) {
|
|
20
|
+
output(chalk.green(`✓ ${message}`));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 输出错误信息到 stderr
|
|
24
|
+
*/
|
|
25
|
+
export function outputError(message) {
|
|
26
|
+
output(chalk.red(`✗ ${message}`));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 输出警告信息到 stderr
|
|
30
|
+
*/
|
|
31
|
+
export function outputWarning(message) {
|
|
32
|
+
output(chalk.yellow(`⚠ ${message}`));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 输出普通信息到 stderr
|
|
36
|
+
*/
|
|
37
|
+
export function outputInfo(message) {
|
|
38
|
+
output(chalk.gray(message));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 输出高亮信息到 stderr
|
|
42
|
+
*/
|
|
43
|
+
export function outputBold(message) {
|
|
44
|
+
output(chalk.bold(message));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 输出提示步骤到 stderr
|
|
48
|
+
*/
|
|
49
|
+
export function outputStep(message) {
|
|
50
|
+
output(chalk.cyan(message));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 输出命令结果到 stdout(JSON 格式,给 bash 解析)
|
|
54
|
+
*/
|
|
55
|
+
export function outputResult(result) {
|
|
56
|
+
// 默认不输出机器结果,避免污染人类可读的终端输出。
|
|
57
|
+
// 仅 shell 包装器在需要时设置 COLYN_OUTPUT_JSON=1。
|
|
58
|
+
if (process.env.COLYN_OUTPUT_JSON !== '1') {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
console.log(JSON.stringify(result));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 格式化并显示错误到 stderr
|
|
65
|
+
*/
|
|
66
|
+
export function formatError(error) {
|
|
67
|
+
if (error instanceof ColynError) {
|
|
68
|
+
output(chalk.red(`\n✗ ${error.message}`));
|
|
69
|
+
if (error.hint) {
|
|
70
|
+
output(chalk.yellow(` ${t('logger.hintPrefix')} ${error.hint}\n`));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (error instanceof Error) {
|
|
74
|
+
output(chalk.red(`\n✗ ${t('logger.errorPrefix')} ${error.message}\n`));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
output(chalk.red(`\n✗ ${t('common.unknownError')}\n`));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,OAAe;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,2BAA2B;IAC3B,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Command Reference
|
|
2
|
+
|
|
3
|
+
This section provides detailed reference documentation for all Colyn commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Global Options](01-worktree.md#global-options)
|
|
10
|
+
|
|
11
|
+
### Worktree Management
|
|
12
|
+
|
|
13
|
+
- [colyn init](01-worktree.md#colyn-init) — Initialize Worktree management structure
|
|
14
|
+
- [colyn add](01-worktree.md#colyn-add) — Create a new Worktree
|
|
15
|
+
- [colyn list](01-worktree.md#colyn-list) — List all Worktrees
|
|
16
|
+
- [colyn list-project](01-worktree.md#colyn-list-project) — List Worktrees across all projects
|
|
17
|
+
- [colyn merge](01-worktree.md#colyn-merge) — Merge Worktree into main branch
|
|
18
|
+
- [colyn remove](01-worktree.md#colyn-remove) — Remove a Worktree
|
|
19
|
+
|
|
20
|
+
### Branch & Status
|
|
21
|
+
|
|
22
|
+
- [colyn checkout](02-branch-status.md#colyn-checkout) — Switch branches in a Worktree
|
|
23
|
+
- [colyn info](02-branch-status.md#colyn-info) — Show project info for current directory
|
|
24
|
+
- [colyn status](02-branch-status.md#colyn-status) — Query or set workflow status
|
|
25
|
+
|
|
26
|
+
### System & Configuration
|
|
27
|
+
|
|
28
|
+
- [colyn repair](03-system-config.md#colyn-repair) — Check and repair project configuration
|
|
29
|
+
- [colyn config](03-system-config.md#colyn-config) — Manage Colyn configuration
|
|
30
|
+
- [colyn completion](03-system-config.md#colyn-completion) — Generate shell auto-completion script
|
|
31
|
+
- [colyn setup](03-system-config.md#colyn-setup) — Configure shell integration
|
|
32
|
+
|
|
33
|
+
### Workflow Tools
|
|
34
|
+
|
|
35
|
+
- [colyn release](04-workflow.md#colyn-release) — Publish a new version
|
|
36
|
+
- [colyn todo](04-workflow.md#colyn-todo) — Manage project Todo task list
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Quick Reference
|
|
41
|
+
|
|
42
|
+
| Command | Alias | Purpose |
|
|
43
|
+
|---------|-------|---------|
|
|
44
|
+
| `colyn init` | - | Initialize project |
|
|
45
|
+
| `colyn add` | - | Create Worktree |
|
|
46
|
+
| `colyn list` | - | List Worktrees |
|
|
47
|
+
| `colyn list-project` | `lsp` | List all projects |
|
|
48
|
+
| `colyn merge` | - | Merge branch |
|
|
49
|
+
| `colyn remove` | - | Remove Worktree |
|
|
50
|
+
| `colyn checkout` | `co` | Switch branch |
|
|
51
|
+
| `colyn info` | - | View location info |
|
|
52
|
+
| `colyn status` | `st` | Query/set workflow status |
|
|
53
|
+
| `colyn repair` | - | Repair configuration |
|
|
54
|
+
| `colyn config` | - | Manage configuration |
|
|
55
|
+
| `colyn completion` | - | Generate completion script |
|
|
56
|
+
| `colyn setup` | - | Configure shell integration |
|
|
57
|
+
| `colyn release` | - | Publish version |
|
|
58
|
+
| `colyn todo` | - | Manage todo tasks |
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Colyn User Manual
|
|
2
|
+
|
|
3
|
+
**Version**: 2.5.5
|
|
4
|
+
**Last Updated**: 2026-02-10
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Welcome to Colyn
|
|
9
|
+
|
|
10
|
+
Colyn is a powerful Git Worktree management tool designed for developers who need to work on multiple features in parallel. It simplifies the creation and management of Git worktrees, handles port allocation automatically, supports tmux integration, and makes multi-branch parallel development effortless.
|
|
11
|
+
|
|
12
|
+
### Core Features
|
|
13
|
+
|
|
14
|
+
- **Simplified Worktree Management**: Create and manage git worktrees with a single command, no complex commands required
|
|
15
|
+
- **Automatic Port Allocation**: Intelligently assigns dev server ports to avoid conflicts
|
|
16
|
+
- **Automatic Directory Switching**: Automatically switches to the target directory after command execution
|
|
17
|
+
- **Smart Branch Handling**: Automatically identifies local branches, remote branches, or creates new ones
|
|
18
|
+
- **Auto-completion**: Supports Bash/Zsh Tab key completion for commands, options, and arguments
|
|
19
|
+
- **tmux Integration**: Efficient worktree management and switching within tmux
|
|
20
|
+
- **Cross-platform Support**: Full support for macOS, Linux, and Windows
|
|
21
|
+
|
|
22
|
+
### Use Cases
|
|
23
|
+
|
|
24
|
+
Colyn is especially well-suited for the following scenarios:
|
|
25
|
+
|
|
26
|
+
- **Parallel Feature Development**: Develop multiple features simultaneously without frequently switching branches
|
|
27
|
+
- **Multi-version Testing**: Run dev servers on different branches simultaneously for comparison testing
|
|
28
|
+
- **Bug Fixes**: Maintain your current development state while quickly switching to a bugfix branch
|
|
29
|
+
- **Code Review**: Review others' branch code in an isolated environment
|
|
30
|
+
- **AI-assisted Development**: Use AI tools like Claude Code to achieve "Parallel Vibe Coding"
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Manual Structure
|
|
35
|
+
|
|
36
|
+
This user manual contains the following chapters:
|
|
37
|
+
|
|
38
|
+
0. **[User Story: From Solo Developer to an AI Team](00-user-story.md)** - See what Colyn can do through a complete real-world scenario
|
|
39
|
+
1. **[Quick Start](01-quick-start.md)** - Get up and running in 5 minutes
|
|
40
|
+
2. **[Installation Guide](02-installation.md)** - Detailed installation instructions
|
|
41
|
+
3. **[Core Concepts](03-core-concepts.md)** - Understanding how Colyn works
|
|
42
|
+
4. **[Command Reference](04-command-reference/README.md)** - Detailed documentation for all commands (organized by category)
|
|
43
|
+
5. **[Advanced Usage](05-advanced-usage.md)** - Advanced features and techniques
|
|
44
|
+
6. **[tmux Integration](06-tmux-integration.md)** - Efficient workflows in a tmux environment
|
|
45
|
+
7. **[Best Practices](07-best-practices.md)** - Recommended workflows and tips
|
|
46
|
+
8. **[Troubleshooting](08-troubleshooting.md)** - Common issues and solutions
|
|
47
|
+
9. **[Glossary](09-glossary.md)** - Quick reference for terms and concepts
|
|
48
|
+
10. **[Configuration System](10-configuration.md)** - Complete configuration file guide
|
|
49
|
+
11. **[Plugin System](11-plugin-system.md)** - Multi-language toolchain support (npm / Maven / Gradle / pip)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Quick Navigation
|
|
54
|
+
|
|
55
|
+
### New Users
|
|
56
|
+
|
|
57
|
+
If this is your first time using Colyn:
|
|
58
|
+
|
|
59
|
+
1. Read [User Story](00-user-story.md) to quickly understand what problem Colyn solves
|
|
60
|
+
2. Read [Quick Start](01-quick-start.md) to learn the basics
|
|
61
|
+
3. Check [Core Concepts](03-core-concepts.md) to understand how it works
|
|
62
|
+
4. Refer to [Command Reference](04-command-reference/README.md) to learn specific commands
|
|
63
|
+
|
|
64
|
+
### Existing Users
|
|
65
|
+
|
|
66
|
+
If you are already using Colyn:
|
|
67
|
+
|
|
68
|
+
- Need help with a specific command → [Command Reference](04-command-reference/README.md)
|
|
69
|
+
- Configuration file setup → [Configuration System](10-configuration.md)
|
|
70
|
+
- Having an issue → [Troubleshooting](08-troubleshooting.md)
|
|
71
|
+
- Looking up a term → [Glossary](09-glossary.md)
|
|
72
|
+
- Learning advanced techniques → [Advanced Usage](05-advanced-usage.md)
|
|
73
|
+
|
|
74
|
+
### tmux Users
|
|
75
|
+
|
|
76
|
+
If you use tmux:
|
|
77
|
+
|
|
78
|
+
- Complete tmux integration guide → [tmux Integration](06-tmux-integration.md)
|
|
79
|
+
- Shortcuts and workflows → [Best Practices](07-best-practices.md)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Getting Help
|
|
84
|
+
|
|
85
|
+
### Command-line Help
|
|
86
|
+
|
|
87
|
+
View help at any time from the command line:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# View all commands
|
|
91
|
+
colyn --help
|
|
92
|
+
|
|
93
|
+
# View help for a specific command
|
|
94
|
+
colyn init --help
|
|
95
|
+
colyn add --help
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Project Information
|
|
99
|
+
|
|
100
|
+
- **GitHub Repository**: [github.com/colinhan/colyn](https://github.com/colinhan/colyn)
|
|
101
|
+
- **Issue Tracker**: [GitHub Issues](https://github.com/colinhan/colyn/issues)
|
|
102
|
+
- **Version History**: [CHANGELOG.md](../CHANGELOG.md)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Get Started
|
|
107
|
+
|
|
108
|
+
Ready? Begin your Colyn journey with [Quick Start](01-quick-start.md)!
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 命令参考手册
|
|
2
|
+
|
|
3
|
+
本章节提供 Colyn 所有命令的详细参考文档。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 目录
|
|
8
|
+
|
|
9
|
+
- [全局选项](01-worktree.md#全局选项)
|
|
10
|
+
|
|
11
|
+
### Worktree 管理
|
|
12
|
+
|
|
13
|
+
- [colyn init](01-worktree.md#colyn-init) — 初始化 Worktree 管理结构
|
|
14
|
+
- [colyn add](01-worktree.md#colyn-add) — 创建新 Worktree
|
|
15
|
+
- [colyn list](01-worktree.md#colyn-list) — 列出所有 Worktree
|
|
16
|
+
- [colyn list-project](01-worktree.md#colyn-list-project) — 列出所有项目的 Worktree
|
|
17
|
+
- [colyn merge](01-worktree.md#colyn-merge) — 合并 Worktree 到主分支
|
|
18
|
+
- [colyn remove](01-worktree.md#colyn-remove) — 删除 Worktree
|
|
19
|
+
|
|
20
|
+
### 分支与状态
|
|
21
|
+
|
|
22
|
+
- [colyn checkout](02-branch-status.md#colyn-checkout) — 在 Worktree 中切换分支
|
|
23
|
+
- [colyn info](02-branch-status.md#colyn-info) — 显示当前目录的项目信息
|
|
24
|
+
- [colyn status](02-branch-status.md#colyn-status) — 查询或设置工作流状态
|
|
25
|
+
|
|
26
|
+
### 系统与配置
|
|
27
|
+
|
|
28
|
+
- [colyn repair](03-system-config.md#colyn-repair) — 检查并修复项目配置
|
|
29
|
+
- [colyn config](03-system-config.md#colyn-config) — 管理 Colyn 配置
|
|
30
|
+
- [colyn completion](03-system-config.md#colyn-completion) — 生成 shell 自动补全脚本
|
|
31
|
+
- [colyn setup](03-system-config.md#colyn-setup) — 配置 shell 集成
|
|
32
|
+
|
|
33
|
+
### 工作流工具
|
|
34
|
+
|
|
35
|
+
- [colyn release](04-workflow.md#colyn-release) — 发布新版本
|
|
36
|
+
- [colyn todo](04-workflow.md#colyn-todo) — 管理项目 Todo 任务列表
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 快速查阅
|
|
41
|
+
|
|
42
|
+
| 命令 | 别名 | 用途 |
|
|
43
|
+
|------|------|------|
|
|
44
|
+
| `colyn init` | - | 初始化项目 |
|
|
45
|
+
| `colyn add` | - | 创建 Worktree |
|
|
46
|
+
| `colyn list` | - | 列出 Worktree |
|
|
47
|
+
| `colyn list-project` | `lsp` | 列出所有项目 |
|
|
48
|
+
| `colyn merge` | - | 合并分支 |
|
|
49
|
+
| `colyn remove` | - | 删除 Worktree |
|
|
50
|
+
| `colyn checkout` | `co` | 切换分支 |
|
|
51
|
+
| `colyn info` | - | 查看位置信息 |
|
|
52
|
+
| `colyn status` | `st` | 查询/设置工作流状态 |
|
|
53
|
+
| `colyn repair` | - | 修复配置 |
|
|
54
|
+
| `colyn config` | - | 管理配置 |
|
|
55
|
+
| `colyn completion` | - | 生成补全脚本 |
|
|
56
|
+
| `colyn setup` | - | 配置 shell 集成 |
|
|
57
|
+
| `colyn release` | - | 发布版本 |
|
|
58
|
+
| `colyn todo` | - | 管理待办任务 |
|