Files
claude-code-conduit/client/config.mjs
mikael-lovqvists-claude-agent 62d2480cd4 Add --url flag to ccc-client and ccc-queue
Overrides CONDUIT_URL env var. Resolved through load_client_config and
threaded into create_conduit_client as base_url parameter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 21:20:59 +00:00

62 lines
1.6 KiB
JavaScript

// Resolve client config from CLI args or environment variables.
// Precedence: CLI args > env vars > defaults
//
// Env vars:
// CCC_SECRETS path to secrets file
// CCC_USER username to authenticate as
// CONDUIT_URL server URL
import { readFileSync } from 'fs';
const DEFAULT_URL = 'http://localhost:3015';
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;
const url = get_arg(argv, '--url') || process.env.CONDUIT_URL || DEFAULT_URL;
if (!secrets_path) {
console.error('Secrets file required: --secrets <path> or CCC_SECRETS=<path>');
process.exit(1);
}
if (!username) {
console.error('Username required: --user <name> or CCC_USER=<name>');
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, url };
}
export function get_remaining(argv) {
const result = [];
let i = 2;
while (i < argv.length) {
if (argv[i] === '--secrets' || argv[i] === '--user' || argv[i] === '--url') {
i += 2;
} else {
result.push(argv[i]);
i++;
}
}
return result;
}