// Resolve client config from CLI args or environment variables. // Precedence: CLI args > env vars > error // // Env vars: // CCC_SECRETS path to secrets file // CCC_USER username to authenticate as import { readFileSync } from 'fs'; function get_arg(argv, flag) { const i = argv.indexOf(flag); return i !== -1 ? argv[i + 1] : null; } export function load_client_config(argv) { const secrets_path = get_arg(argv, '--secrets') || process.env.CCC_SECRETS; const username = get_arg(argv, '--user') || process.env.CCC_USER; if (!secrets_path) { console.error('Secrets file required: --secrets or CCC_SECRETS='); process.exit(1); } if (!username) { console.error('Username required: --user or CCC_USER='); process.exit(1); } let secrets; try { secrets = JSON.parse(readFileSync(secrets_path, 'utf8')); } catch (err) { console.error(`Cannot read secrets file: ${err.message}`); process.exit(1); } const user_entry = secrets.users?.[username]; if (!user_entry) { console.error(`User '${username}' not found in secrets file`); process.exit(1); } return { username, secret: user_entry.secret }; } export function get_remaining(argv) { const result = []; let i = 2; while (i < argv.length) { if (argv[i] === '--secrets' || argv[i] === '--user') { i += 2; } else { result.push(argv[i]); i++; } } return result; }