prime
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const { initialize } = require("..");
|
||||
|
||||
function getArtifactName(args) {
|
||||
const inline = args.find(arg => arg.startsWith("--artifact="));
|
||||
if (inline) return inline.slice("--artifact=".length);
|
||||
|
||||
const index = args.indexOf("--artifact");
|
||||
if (index === -1) return null;
|
||||
if (!args[index + 1]) throw new Error("--artifact requires a name");
|
||||
return args[index + 1];
|
||||
}
|
||||
|
||||
function getSettingOverlays(args) {
|
||||
const overlays = [];
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i];
|
||||
if (arg.startsWith("--setting=")) {
|
||||
const value = arg.slice("--setting=".length);
|
||||
if (!value) throw new Error("--setting requires a file path");
|
||||
overlays.push(value);
|
||||
continue;
|
||||
}
|
||||
if (arg !== "--setting") continue;
|
||||
if (!args[i + 1]) throw new Error("--setting requires a file path");
|
||||
overlays.push(args[++i]);
|
||||
}
|
||||
return overlays;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const args = process.argv.slice(2);
|
||||
const optimus = initialize(process.cwd(), { settingOverlays: getSettingOverlays(args) });
|
||||
const artifactName = getArtifactName(args);
|
||||
|
||||
if (artifactName) {
|
||||
await optimus.buildArtifact(artifactName);
|
||||
console.log(`Artifact complete: ${artifactName}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const artifacts = optimus.getSettings("artifacts");
|
||||
const names = Object.keys(artifacts);
|
||||
await optimus.buildAll();
|
||||
console.log(names.length ? `Artifacts complete: ${names.join(", ")}` : "No artifacts configured.");
|
||||
}
|
||||
|
||||
main().catch(error => {
|
||||
console.error(error.message || error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user