Files
eden/scripts/configure-convex.ts
T

16 lines
1.2 KiB
TypeScript

export {};
// Run only against your intended self-hosted deployment. Values are never printed.
const requiredNames = ['CONVEX_BRIDGE_SECRET', 'CONVEX_SYNC_WORKER_SECRET', 'APP_AUTH_ISSUER', 'APP_AUTH_JWKS', 'APP_CAPABILITY_ALLOWLIST'] as const;
if (!process.env.CONVEX_SELF_HOSTED_URL || !process.env.CONVEX_SELF_HOSTED_ADMIN_KEY) throw new Error('Set self-hosted URL and admin key before configuring Convex.');
if (process.env.CONVEX_SYNC_WORKER_SECRET && process.env.CONVEX_SYNC_WORKER_SECRET === process.env.CONVEX_BRIDGE_SECRET) throw new Error('Worker and general bridge secrets must be distinct.');
for (const name of requiredNames) {
const value = process.env[name];
if (value === undefined || (name !== 'APP_CAPABILITY_ALLOWLIST' && !value)) {
throw new Error(`Missing ${name}`);
}
// Pipe values rather than exposing them in process arguments or shell history.
const child = Bun.spawn(['bun', 'node_modules/convex/bin/main.js', 'env', 'set', name], { stdin: new Blob([value]), stdout: 'pipe', stderr: 'pipe' });
if (await child.exited !== 0) throw new Error(`Could not configure ${name}; check deployment URL/admin key (output suppressed to protect secrets).`);
console.log(`Configured ${name}`);
}