Skip to content

Commit

Permalink
fix(config): allow get on config properties without key
Browse files Browse the repository at this point in the history
  • Loading branch information
privatenumber committed Apr 25, 2023
1 parent e634c14 commit 4d7712f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/commands/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]}`);
Expand Down
14 changes: 12 additions & 2 deletions src/utils/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,24 @@ const readConfigFile = async (): Promise<RawConfig> => {
return ini.parse(configString);
};

export const getConfig = async (cliConfig?: RawConfig): Promise<ValidConfig> => {
export const getConfig = async (
cliConfig?: RawConfig,
suppressErrors?: boolean,
): Promise<ValidConfig> => {
const config = await readConfigFile();
const parsedConfig: Record<string, unknown> = {};

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;
Expand Down
30 changes: 16 additions & 14 deletions tests/specs/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand All @@ -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();
});
});

0 comments on commit 4d7712f

Please sign in to comment.