repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
scripts/build/cli.ts
Rawimport { allExtensionNames, buildExtension } from "./build.ts";
function usage(): never {
console.error(
"usage: node scripts/build/cli.ts [--release] [--all] <extension>...",
);
process.exit(2);
}
export async function main(argv = process.argv.slice(2)): Promise<number> {
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();