UNPKG

@codegenie/cli

Version:
40 lines 1.57 kB
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