49 lines
2.1 KiB
TypeScript
49 lines
2.1 KiB
TypeScript
import { existsSync } from "node:fs";
|
||
import { mkdir, writeFile } from "node:fs/promises";
|
||
import { join } from "node:path";
|
||
import { STAGES } from "../types.ts";
|
||
import { writeIfChanged } from "./utils.ts";
|
||
|
||
const COMMANDS_DIR = ".claude/commands";
|
||
|
||
export async function injectClaudeCode(projectRoot: string): 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`);
|
||
if (!existsSync(commandPath)) {
|
||
const cmd = hasChangeName ? `rune ${stage} <变更名>` : `rune ${stage}`;
|
||
const nameHint = hasChangeName ? "\n如果用户没有指定变更名称,请向用户确认。" : "";
|
||
await writeFile(
|
||
commandPath,
|
||
`执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${nameHint}\n`,
|
||
);
|
||
}
|
||
}
|
||
|
||
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`);
|
||
}
|
||
}
|
||
|
||
export async function updateClaudeCode(projectRoot: string): 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 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`);
|
||
}
|