diff --git a/src/commands/config.ts b/src/commands/config.ts index 3aeb0b4..1e3d91d 100644 --- a/src/commands/config.ts +++ b/src/commands/config.ts @@ -12,7 +12,7 @@ export default command({ const { mode, keyValue: keyValues } = argv._; if (mode === 'get') { - const config = await getConfig(); + const config = await getConfig({}, true); for (const key of keyValues) { if (hasOwn(config, key)) { console.log(`${key}=${config[key as keyof typeof config]}`); diff --git a/src/utils/config.ts b/src/utils/config.ts index 28c609b..192e584 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -104,14 +104,24 @@ const readConfigFile = async (): Promise => { return ini.parse(configString); }; -export const getConfig = async (cliConfig?: RawConfig): Promise => { +export const getConfig = async ( + cliConfig?: RawConfig, + suppressErrors?: boolean, +): Promise => { const config = await readConfigFile(); const parsedConfig: Record = {}; for (const key of Object.keys(configParsers) as ConfigKeys[]) { const parser = configParsers[key]; const value = cliConfig?.[key] ?? config[key]; - parsedConfig[key] = parser(value); + + if (suppressErrors) { + try { + parsedConfig[key] = parser(value); + } catch {} + } else { + parsedConfig[key] = parser(value); + } } return parsedConfig as ValidConfig; diff --git a/tests/specs/config.ts b/tests/specs/config.ts index ec19f5f..5f0abf6 100644 --- a/tests/specs/config.ts +++ b/tests/specs/config.ts @@ -25,19 +25,6 @@ export default testSuite(({ describe }) => { expect(stderr).toMatch('Invalid config property OPENAI_KEY: Must start with "sk-"'); }); - await test('set config file', async () => { - await aicommits(['config', 'set', openAiToken]); - - const configFile = await fs.readFile(configPath, 'utf8'); - expect(configFile).toMatch(openAiToken); - }); - - await test('get config file', async () => { - const { stdout } = await aicommits(['config', 'get', 'OPENAI_KEY']); - - expect(stdout).toBe(openAiToken); - }); - await test('reading unknown config', async () => { await fs.appendFile(configPath, 'UNKNOWN=1'); @@ -63,11 +50,26 @@ export default testSuite(({ describe }) => { await aicommits(['config', 'set', timeout]); const configFile = await fs.readFile(configPath, 'utf8'); - expect(configFile).toMatch(timeout); + + const get = await aicommits(['config', 'get', 'timeout']); + expect(get.stdout).toBe(timeout); }); }); + await test('set config file', async () => { + await aicommits(['config', 'set', openAiToken]); + + const configFile = await fs.readFile(configPath, 'utf8'); + expect(configFile).toMatch(openAiToken); + }); + + await test('get config file', async () => { + const { stdout } = await aicommits(['config', 'get', 'OPENAI_KEY']); + + expect(stdout).toBe(openAiToken); + }); + await fixture.rm(); }); });