#!/usr/bin/env node import { applyInitialization, inspectInitialization } from "../init.ts"; const [command = "inspect", cwd = process.cwd(), rawPrefix] = process.argv.slice(2); const prefix = rawPrefix || undefined; try { if (command === "inspect") { const result = inspectInitialization(cwd, prefix); console.log(`ROOT ${result.root}`); console.log(`PREFIX ${result.prefix ?? "required"}`); for (const core of result.cores) console.log(`CORE ${core.state} ${core.path}`); for (const item of result.creates) console.log(`CREATE ${item}`); for (const item of result.rewrites) console.log(`REWRITE ${item}`); if ( result.creates.length === 0 && result.rewrites.length === 0 && result.cores.every((core) => core.state === "preserve") ) console.log("OK machine state current"); } else if (command === "apply" || command === "rewrite") { const result = applyInitialization(cwd, prefix, command === "rewrite"); console.log(`ROOT ${result.root}`); console.log(`PREFIX ${result.prefix}`); for (const item of result.changed) console.log(`WROTE ${item}`); for (const item of result.pending) console.log(`PENDING ${item}`); if (result.pending.length === 0) console.log("OK machine state applied"); } else throw new Error( `Unknown command ${command}; expected inspect, apply, or rewrite`, ); } catch (error) { const value = error instanceof Error ? error : new Error(String(error)); const code = "code" in value && typeof value.code === "string" ? value.code : "init.failed"; console.error(`ERROR ${code}: ${value.message}`); process.exitCode = 1; }