@codegenie/cli
Version:
Code Genie CLI
40 lines • 1.57 kB
JavaScript
import { readFileSync, writeFileSync } from 'node:fs';
import { resolve } from 'node:path';
import { homedir } from 'node:os';
import assign from 'lodash.assign';
import { jwtDecode } from 'jwt-decode';
import createDebug from 'debug';
const debug = createDebug('codegenie:config');
const CONFIG_PATH = process.env.CONFIG_PATH || resolve(homedir(), '.codegenierc');
debug('CONFIG_PATH %s', CONFIG_PATH);
export function updateCodeGenieConfig(config) {
const debug = createDebug('codegenie:config:updateCodeGenieConfig');
const currentConfig = getCodeGenieConfig() || {};
if (config.tokens?.idToken) {
const decodedIdToken = jwtDecode(config.tokens.idToken);
config.user = {
givenName: decodedIdToken.given_name,
userId: decodedIdToken.userId,
orgId: decodedIdToken.orgId,
email: decodedIdToken.email,
};
}
if (config.tokens?.expiresAt) {
config.tokens.expiresAt *= 1000; // JWT expires_at is in seconds, not ms
}
const newConfig = assign({}, currentConfig, config);
debug('newConfig %O', newConfig);
writeFileSync(CONFIG_PATH, JSON.stringify(newConfig, null, 2), { encoding: 'utf8' });
}
export function getCodeGenieConfig() {
const debug = createDebug('codegenie:config:getCodeGenieConfig');
try {
const configString = readFileSync(CONFIG_PATH, { encoding: 'utf8' });
debug('configString %s', configString);
return JSON.parse(configString);
}
catch {
return null;
}
}
//# sourceMappingURL=config.js.map