UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

224 lines (222 loc) • 11.1 kB
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs'); const require_theme = require('../../utils/theme.cjs'); const require_deploy_train = require('../render/deploy-train.cjs'); const require_exit_codes = require('../exit-codes.cjs'); const require_deploy = require('../render/deploy.cjs'); let _clack_prompts = require("@clack/prompts"); _clack_prompts = require_runtime.__toESM(_clack_prompts, 1); //#region src/cli/commands/publish.ts const rollbackPreCall = async (ctx) => { const input = ctx.input; const client = ctx.client; const descriptor = ctx.descriptor; const rollbackInput = input; if (descriptor.key === "rollback" && !rollbackInput.listOnly && !rollbackInput.version && !rollbackInput.previous) { const listing = await client.rollback({ ...rollbackInput, listOnly: true }); if (listing.status !== "list" || !listing.history?.length) { console.error(listing.error ?? "No publish history found"); process.exit(1); } console.log(); const selection = await _clack_prompts.select({ message: "Roll back to which publish?", options: listing.history.map((entry) => ({ value: String(entry.blockHeight), label: `${entry.blockTimestamp} (block ${entry.blockHeight})`, hint: entry.summary })) }); if (_clack_prompts.isCancel(selection)) return; rollbackInput.version = selection; } }; const publishRenderers = { pluginAdd: async (result, _ctx) => { console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Added plugin ${result.key}`)); if (result.development) console.log(` ${require_theme.colors.dim("Development:")} ${result.development}`); if (result.production) console.log(` ${require_theme.colors.dim("Production:")} ${result.production}`); console.log(); }, pluginRemove: async (result, _ctx) => { console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Removed plugin ${result.key}`)); console.log(); }, pluginList: async (result, _ctx) => { console.log(); console.log(require_theme.colors.cyan(require_theme.frames.top(52))); console.log(` ${require_theme.icons.config} ${require_theme.gradients.cyber("PLUGINS")}`); console.log(require_theme.colors.cyan(require_theme.frames.bottom(52))); console.log(); if (result.plugins.length === 0) console.log(require_theme.colors.dim(" No plugins configured")); else for (const pluginItem of result.plugins) { console.log(` ${require_theme.colors.cyan(pluginItem.key)}`); if (pluginItem.development) console.log(` ${require_theme.colors.dim("Development:")} ${pluginItem.development}`); if (pluginItem.production) console.log(` ${require_theme.colors.dim("Production:")} ${pluginItem.production}`); } console.log(); }, pluginPublish: async (result, _ctx) => { console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Published plugin ${result.key}`)); if (result.path) console.log(` ${require_theme.colors.dim("Path:")} ${result.path}`); if (result.production) console.log(` ${require_theme.colors.dim("Production:")} ${result.production}`); if (result.version) console.log(` ${require_theme.colors.dim("Version:")} ${result.version}`); if (result.fingerprint) console.log(` ${require_theme.colors.dim("Fingerprint:")} ${result.fingerprint}`); console.log(); }, registryUse: async (result, _ctx) => { console.log(); if (require_exit_codes.exitCodeFor(result) === 1) { console.error(require_theme.colors.error(`${require_theme.icons.err} ${result.error || "Unknown error"}`)); process.exit(1); } console.log(require_theme.colors.green(`${require_theme.icons.ok} ${result.status === "dry-run" ? "Dry run" : "Composed"} from ${result.from}`)); for (const section of result.applied) console.log(` ${require_theme.colors.green("+")} ${section}`); if (result.configPath) console.log(` ${require_theme.colors.dim("Config:")} ${result.configPath}`); if (result.status === "updated") console.log(require_theme.colors.dim(" Run bos types gen to refresh generated types.")); console.log(); }, publish: async (result, _ctx) => { if (result.status === "dry-run") { console.log(); console.log(require_theme.colors.cyan(`${require_theme.icons.ok} Dry run complete`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${result.registryUrl}`); console.log(); return; } if (require_exit_codes.exitCodeFor(result) === 1) { console.log(); console.log(require_theme.colors.error(`${require_theme.icons.err} Publish failed`)); if (result.error) console.log(` ${require_theme.colors.dim("Error:")} ${result.error}`); if (result.deployResults && result.deployResults.length > 0) { const failures = result.deployResults.filter((r) => !r.success); if (failures.length > 0) { console.log(); for (const f of failures) { const errorLine = (f.error ?? "Failed").split("\n")[0]; console.log(` ${require_theme.colors.error(require_theme.icons.err)} ${f.key}: ${errorLine}`); } } } console.log(); process.exit(1); } if (result.status === "published") { console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Published successfully`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${result.registryUrl}`); if (result.txHash) console.log(` ${require_theme.colors.dim("Transaction:")} ${result.txHash}`); if (result.built && result.built.length > 0) console.log(` ${require_theme.colors.dim("Built:")} ${result.built.join(", ")}`); if (result.skipped && result.skipped.length > 0) console.log(` ${require_theme.colors.dim("Skipped:")} ${result.skipped.join(", ")}`); if (result.deployResults) { const warnings = result.deployResults.flatMap((r) => r.warnings ?? []); if (warnings.length > 0) { console.log(); console.log(` ${require_theme.colors.yellow("⚠")} Build warnings:`); for (const w of warnings) console.log(` ${require_theme.colors.dim(w)}`); } } console.log(); return; } }, rollback: async (result, _ctx) => { const rollbackResult = result; if (rollbackResult.status === "error") { console.log(); console.log(require_theme.colors.error(`${require_theme.icons.err} Roll back failed`)); if (rollbackResult.error) console.log(` ${require_theme.colors.dim("Error:")} ${rollbackResult.error}`); if (rollbackResult.verification) { console.log(); for (const check of rollbackResult.verification) { const mark = check.ok ? require_theme.colors.green(require_theme.icons.ok) : require_theme.colors.error(require_theme.icons.err); const reason = check.reason ? require_theme.colors.dim(` — ${check.reason}`) : ""; console.log(` ${mark} ${check.slot}${reason}`); } } console.log(); process.exit(1); } if (rollbackResult.status === "dry-run") { console.log(); console.log(require_theme.colors.cyan(`${require_theme.icons.ok} Rollback dry run complete`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${rollbackResult.registryUrl}`); console.log(); return; } console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Rolled back`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${rollbackResult.registryUrl}`); if (rollbackResult.txHash) console.log(` ${require_theme.colors.dim("Transaction:")} ${rollbackResult.txHash}`); console.log(); }, deploy: async (result, _ctx) => { const deployResult = result; if (deployResult.status === "list") { console.log(); console.log(require_theme.colors.cyan("Recent publishes (audit trail)")); for (const entry of deployResult.history ?? []) console.log(` ${entry.blockTimestamp} ${require_theme.colors.dim(`block ${entry.blockHeight}`)}${entry.publishedAt ? require_theme.colors.dim(` ${entry.publishedAt}`) : ""}`); console.log(); return; } if (deployResult.fingerprint) console.log(` ${require_theme.colors.dim("Fingerprint:")} ${deployResult.fingerprint}`); if (deployResult.status === "dry-run") { console.log(); console.log(require_theme.colors.cyan(`${require_theme.icons.ok} Dry run complete`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${deployResult.registryUrl}`); console.log(); return; } if (deployResult.status === "error") { console.log(); console.log(require_theme.colors.error(`${require_theme.icons.err} Deploy failed`)); if (deployResult.error) console.log(` ${require_theme.colors.dim("Error:")} ${deployResult.error}`); if (deployResult.deployResults && deployResult.deployResults.length > 0) { const failures = deployResult.deployResults.filter((r) => !r.success); if (failures.length > 0) { console.log(); for (const f of failures) { const errorLine = (f.error ?? "Failed").split("\n")[0]; console.log(` ${require_theme.colors.error(require_theme.icons.err)} ${f.key}: ${errorLine}`); } } } console.log(); process.exit(1); } if (deployResult.status === "deployed") { console.log(); console.log(require_theme.colors.green(`${require_theme.icons.ok} Deployed successfully`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${deployResult.registryUrl}`); if (deployResult.txHash) console.log(` ${require_theme.colors.dim("Transaction:")} ${deployResult.txHash}`); if (deployResult.built && deployResult.built.length > 0) console.log(` ${require_theme.colors.dim("Built:")} ${deployResult.built.join(", ")}`); if (deployResult.skipped && deployResult.skipped.length > 0) console.log(` ${require_theme.colors.dim("Skipped:")} ${deployResult.skipped.join(", ")}`); if (deployResult.deployResults) require_deploy_train.renderBuildWarnings(deployResult.deployResults); if (deployResult.image) console.log(` ${require_theme.colors.dim("Image:")} ${deployResult.image}`); if (deployResult.service) console.log(` ${require_theme.colors.dim("Railway:")} deployed ${deployResult.service}`); require_deploy.renderDeployLegs(deployResult.legs); console.log(); return; } if (deployResult.status === "published") { const failedLegs = require_deploy.failedDeployLegs(deployResult.legs); console.log(); console.log(require_theme.colors.yellow(failedLegs.length > 0 ? `${require_theme.icons.err} Config published, but the ${failedLegs.join(" and ")} leg(s) failed` : `${require_theme.icons.err} Config published, but a deploy leg failed`)); console.log(` ${require_theme.colors.dim("Registry URL:")} ${deployResult.registryUrl}`); if (deployResult.txHash) console.log(` ${require_theme.colors.dim("Transaction:")} ${deployResult.txHash}`); if (deployResult.error) console.log(` ${require_theme.colors.dim("Error:")} ${deployResult.error}`); require_deploy.renderDeployLegs(deployResult.legs); console.log(); process.exit(1); } } }; //#endregion exports.publishRenderers = publishRenderers; exports.rollbackPreCall = rollbackPreCall; //# sourceMappingURL=publish.cjs.map