|
| 1 | +#!/usr/bin/env node |
| 2 | + |
| 3 | +/** |
| 4 | + * Resolves Clerk pk/sk for a named test instance from a JSON-encoded env var |
| 5 | + * (e.g. INTEGRATION_INSTANCE_KEYS / INTEGRATION_STAGING_INSTANCE_KEYS). |
| 6 | + * |
| 7 | + * Usage: |
| 8 | + * node scripts/resolve-instance-keys.mjs <SECRET_ENV_VAR> <INSTANCE_NAME> |
| 9 | + * |
| 10 | + * Writes pk and sk as GitHub Actions step outputs to $GITHUB_OUTPUT and masks |
| 11 | + * sk in the runner logs. Exits non-zero with a ::error:: annotation if the |
| 12 | + * env var is missing, malformed, or doesn't contain the requested instance. |
| 13 | + */ |
| 14 | + |
| 15 | +import { appendFileSync } from 'node:fs'; |
| 16 | + |
| 17 | +const fail = msg => { |
| 18 | + console.error(`::error::${msg}`); |
| 19 | + process.exit(1); |
| 20 | +}; |
| 21 | + |
| 22 | +const [, , secretVar, instanceName] = process.argv; |
| 23 | +if (!secretVar || !instanceName) { |
| 24 | + fail('Usage: resolve-instance-keys.mjs <SECRET_ENV_VAR> <INSTANCE_NAME>'); |
| 25 | +} |
| 26 | + |
| 27 | +const raw = process.env[secretVar]; |
| 28 | +if (!raw) fail(`${secretVar} secret is not set`); |
| 29 | + |
| 30 | +let parsed; |
| 31 | +try { |
| 32 | + parsed = JSON.parse(raw); |
| 33 | +} catch (err) { |
| 34 | + fail(`Failed to parse ${secretVar} as JSON: ${err.message}`); |
| 35 | +} |
| 36 | + |
| 37 | +if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) { |
| 38 | + fail(`Expected ${secretVar} to be a JSON object of instance entries`); |
| 39 | +} |
| 40 | + |
| 41 | +const entry = parsed[instanceName]; |
| 42 | +if (!entry) fail(`No entry '${instanceName}' found in ${secretVar}`); |
| 43 | + |
| 44 | +const { pk, sk } = entry; |
| 45 | +if (!pk) fail(`Entry '${instanceName}' in ${secretVar} is missing 'pk'`); |
| 46 | +if (!sk) fail(`Entry '${instanceName}' in ${secretVar} is missing 'sk'`); |
| 47 | + |
| 48 | +console.log(`::add-mask::${sk}`); |
| 49 | + |
| 50 | +const out = process.env.GITHUB_OUTPUT; |
| 51 | +if (out) appendFileSync(out, `pk=${pk}\nsk=${sk}\n`); |
0 commit comments