UNPKG

sourcesailor

Version:

A CLI tool for analyzing and documenting codebases

56 lines (55 loc) 1.69 kB
import fs from 'fs'; import os from 'os'; import path from 'path'; export const command = 'updateConfig [apiKey|k] [model|m]'; export const describe = 'Update OpenAI API Key and default model'; export function builder(yargs) { yargs.option('apiKey', { describe: 'OpenAI API Key', alias: 'k', type: 'string', }); yargs.option('model', { alias: 'm', describe: 'OpenAI Model', type: 'string', }); yargs.option('analysisDir', { alias: 'a', describe: 'Root directory to write the analysis. Default home directory. Use p to use the codebase directory.', type: 'string', }); yargs.option('geminiApiKey', { describe: 'Gemini API Key', alias: 'g', type: 'string', }); yargs.option('anthropicApiKey', { describe: 'Anthropic API Key', alias: 'n', type: 'string', }); return yargs; } export function handler(argv) { const homeDir = os.homedir(); const configFile = path.join(homeDir, '.SourceSailor', 'config.json'); const configData = JSON.parse(fs.readFileSync(configFile, 'utf8')); if (argv.apiKey) { configData.OPENAI_API_KEY = argv.apiKey; } if (argv.model) { configData.DEFAULT_OPENAI_MODEL = argv.model; } if (argv.analysisDir) { configData.ANALYSIS_DIR = argv.analysisDir; } if (argv.geminiApiKey) { configData.GEMINI_API_KEY = argv.geminiApiKey; } if (argv.anthropicApiKey) { configData.ANTHROPIC_API_KEY = argv.anthropicApiKey; } fs.writeFileSync(configFile, JSON.stringify(configData)); } export const usage = '$0 <cmd> [args]';