@lunora/cli
Version:
The Lunora CLI: init, dev, deploy, codegen, run, reset, and migrate commands
95 lines (92 loc) • 3.47 kB
JavaScript
import { d as defineHandler } from '../packem_shared/command-lYnl4QyF.mjs';
import { e as execArgsFor, d as detectPackageManager } from '../packem_shared/detect-package-manager-v4hHpQd0.mjs';
import { defaultSpawner } from '../packem_shared/createRecordingSpawner-WuSn20kb.mjs';
const withEnv = (args, env) => {
if (env !== void 0) {
args.push("--env", env);
}
return args;
};
const buildListArgs = (options) => {
const args = withEnv(["deployments", "list"], options.env);
if (options.json) {
args.push("--json");
}
return args;
};
const buildArgs = (options) => {
switch (options.subcommand) {
case "inspect": {
if (options.versionId === void 0) {
return { error: "deployments inspect requires a version id. Usage: lunora deployments inspect <version-id>" };
}
return { args: withEnv(["versions", "view", options.versionId], options.env) };
}
case "list": {
return { args: buildListArgs(options) };
}
case "promote": {
if (options.versionId === void 0) {
return { error: "deployments promote requires a version id. Usage: lunora deployments promote <version-id> --yes" };
}
if (!options.yes) {
return { error: "deployments promote shifts 100% of live traffic. Re-run with --yes to confirm." };
}
const args = withEnv(["versions", "deploy", `${options.versionId}@100%`, "--yes"], options.env);
if (options.message !== void 0) {
args.push("--message", options.message);
}
return { args };
}
case "rollback": {
if (!options.yes) {
return { error: "deployments rollback changes the live version. Re-run with --yes to confirm." };
}
const args = withEnv(["rollback"], options.env);
if (options.versionId !== void 0) {
args.push(options.versionId);
}
args.push("--yes");
if (options.message !== void 0) {
args.push("--message", options.message);
}
return { args };
}
default: {
return { error: `deployments: unknown subcommand "${options.subcommand}"` };
}
}
};
const runDeploymentsCommand = async (options) => {
const { args, error } = buildArgs(options);
if (error !== void 0 || args === void 0) {
options.logger.error(error ?? "deployments: nothing to run");
return { code: 1, descriptor: void 0, error };
}
const cwd = options.cwd ?? process.cwd();
const exec = execArgsFor(detectPackageManager(cwd), "wrangler", args);
const descriptor = { args: exec.args, command: exec.command, cwd };
options.logger.info(`${descriptor.command} ${descriptor.args.join(" ")}`);
const spawner = options.spawner ?? defaultSpawner;
const result = await spawner(descriptor);
return { code: result.code, descriptor };
};
const isDeploymentsSubcommand = (value) => value === "list" || value === "inspect" || value === "rollback" || value === "promote";
const execute = defineHandler(({ argument, cwd, logger, options }) => {
const sub = argument[0];
if (!isDeploymentsSubcommand(sub)) {
logger.error(`deployments: unknown subcommand "${sub ?? ""}" — expected list | inspect | rollback | promote`);
return { code: 1 };
}
return runDeploymentsCommand({
cwd,
env: options.env,
json: options.json === true,
logger,
message: options.message,
subcommand: sub,
versionId: argument[1],
yes: options.yes === true
});
});
export { execute, runDeploymentsCommand };