feat: 适配器支持动态命令前缀

This commit is contained in:
2026-06-09 20:13:40 +08:00
parent 909c29db25
commit a5c8263412
4 changed files with 103 additions and 19 deletions

View File

@@ -6,7 +6,10 @@ import { writeIfChanged } from "./utils.ts";
const COMMANDS_DIR = ".claude/commands";
export async function injectClaudeCode(projectRoot: string): Promise<void> {
export async function injectClaudeCode(
projectRoot: string,
command: string = "rune",
): Promise<void> {
for (const stage of STAGES) {
const hasChangeName = stage !== "discuss";
@@ -14,7 +17,7 @@ export async function injectClaudeCode(projectRoot: string): Promise<void> {
await mkdir(commandDir, { recursive: true });
const commandPath = join(commandDir, `rune-${stage}.md`);
if (!existsSync(commandPath)) {
const cmd = hasChangeName ? `rune ${stage} <变更名>` : `rune ${stage}`;
const cmd = hasChangeName ? `${command} ${stage} <变更名>` : `${command} ${stage}`;
const nameHint = hasChangeName ? "\n如果用户没有指定变更名称请向用户确认。" : "";
await writeFile(
commandPath,
@@ -26,23 +29,32 @@ export async function injectClaudeCode(projectRoot: string): Promise<void> {
const commandDir = join(projectRoot, COMMANDS_DIR);
const statusPath = join(commandDir, "rune-status.md");
if (!existsSync(statusPath)) {
await writeFile(statusPath, `执行以下命令查看变更状态:\n\`\`\`bash\nrune status\n\`\`\`\n`);
await writeFile(
statusPath,
`执行以下命令查看变更状态:\n\`\`\`bash\n${command} status\n\`\`\`\n`,
);
}
}
export async function updateClaudeCode(projectRoot: string): Promise<void> {
export async function updateClaudeCode(
projectRoot: string,
command: string = "rune",
): Promise<void> {
for (const stage of STAGES) {
const hasChangeName = stage !== "discuss";
const commandDir = join(projectRoot, COMMANDS_DIR);
await mkdir(commandDir, { recursive: true });
const commandPath = join(commandDir, `rune-${stage}.md`);
const cmd = hasChangeName ? `rune ${stage} <变更名>` : `rune ${stage}`;
const cmd = hasChangeName ? `${command} ${stage} <变更名>` : `${command} ${stage}`;
const nameHint = hasChangeName ? "\n如果用户没有指定变更名称请向用户确认。" : "";
const newContent = `执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${nameHint}\n`;
await writeIfChanged(commandPath, newContent);
}
const statusPath = join(projectRoot, COMMANDS_DIR, "rune-status.md");
await writeIfChanged(statusPath, `执行以下命令查看变更状态:\n\`\`\`bash\nrune status\n\`\`\`\n`);
await writeIfChanged(
statusPath,
`执行以下命令查看变更状态:\n\`\`\`bash\n${command} status\n\`\`\`\n`,
);
}