feat: mergeConfig 保留 metadata 字段
This commit is contained in:
@@ -94,6 +94,10 @@ function mergeConfig(userConfig: Partial<RuneConfig>): RuneConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userConfig.metadata) {
|
||||||
|
result.metadata = userConfig.metadata;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -170,3 +170,38 @@ describe("validateConfig", () => {
|
|||||||
expect(() => validateConfig(config)).not.toThrow();
|
expect(() => validateConfig(config)).not.toThrow();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("mergeConfig 保留 metadata", () => {
|
||||||
|
it("保留用户配置中的 metadata", async () => {
|
||||||
|
const tmpDir = join(import.meta.dir, "__tmp_config_meta_test__");
|
||||||
|
await mkdir(tmpDir, { recursive: true });
|
||||||
|
try {
|
||||||
|
const configPath = join(tmpDir, ".rune", "config.yaml");
|
||||||
|
await mkdir(join(tmpDir, ".rune"), { recursive: true });
|
||||||
|
await writeFile(
|
||||||
|
configPath,
|
||||||
|
`metadata:\n command: "bunx @lanyuanxiaoyao/rune"\nstages:\n discuss:\n prompt: "自定义讨论"\n`,
|
||||||
|
);
|
||||||
|
const config = await loadConfig(tmpDir);
|
||||||
|
expect(config.metadata).toBeDefined();
|
||||||
|
expect(config.metadata!.command).toBe("bunx @lanyuanxiaoyao/rune");
|
||||||
|
expect(config.stages.discuss!.prompt).toBe("自定义讨论");
|
||||||
|
} finally {
|
||||||
|
await rm(tmpDir, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("无 metadata 时不设置该字段", async () => {
|
||||||
|
const tmpDir = join(import.meta.dir, "__tmp_config_nometa_test__");
|
||||||
|
await mkdir(tmpDir, { recursive: true });
|
||||||
|
try {
|
||||||
|
const configPath = join(tmpDir, ".rune", "config.yaml");
|
||||||
|
await mkdir(join(tmpDir, ".rune"), { recursive: true });
|
||||||
|
await writeFile(configPath, `stages:\n discuss:\n prompt: "测试"\n`);
|
||||||
|
const config = await loadConfig(tmpDir);
|
||||||
|
expect(config.metadata).toBeUndefined();
|
||||||
|
} finally {
|
||||||
|
await rm(tmpDir, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user