import { allExtensionNames, buildExtension } from "./build.ts"; function usage(): never { console.error( "usage: node scripts/build/cli.ts [--release] [--all] ...", ); process.exit(2); } export async function main(argv = process.argv.slice(2)): Promise { let release = false; let all = false; const names: string[] = []; for (const arg of argv) { if (arg === "--release") release = true; else if (arg === "--all") all = true; else if (arg.startsWith("-")) usage(); else names.push(arg); } const selected = all ? allExtensionNames() : names; if (!selected.length) usage(); let failed = 0; for (const name of selected) { const started = performance.now(); try { const built = await buildExtension(name, { release }); console.log( `OK ${name} → ${built.dir} (${built.entries.join(", ")}) ${Math.round(performance.now() - started)}ms`, ); } catch (error) { failed += 1; console.error( `ERROR ${name}: ${error instanceof Error ? error.message : String(error)}`, ); } } return failed ? 1 : 0; } process.exitCode = await main();