@lunora/cli
Version:
The Lunora CLI: init, dev, deploy, codegen, run, reset, and migrate commands
53 lines (50 loc) • 2.28 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 { i as isDockerAvailable } from '../packem_shared/docker-hMQ97KSQ.mjs';
import { defaultSpawner } from '../packem_shared/createRecordingSpawner-WuSn20kb.mjs';
const SUBCOMMANDS = /* @__PURE__ */ new Set(["build", "delete", "images", "info", "list", "push"]);
const NEEDS_DOCKER = /* @__PURE__ */ new Set(["build", "push"]);
const runContainersCommand = async (options) => {
const [subcommand, ...rest] = options.argument;
if (subcommand === void 0 || !SUBCOMMANDS.has(subcommand)) {
options.logger.error(
`lunora containers requires a subcommand: ${[...SUBCOMMANDS].toSorted((a, b) => a.localeCompare(b)).join(" | ")}. Example: lunora containers build ./containers/app --tag app:v1 --push`
);
return { code: 1 };
}
if (NEEDS_DOCKER.has(subcommand) && !(options.dockerAvailable ?? isDockerAvailable)()) {
options.logger.error(
`containers ${subcommand} needs a running Docker-compatible engine (it builds/pushes images locally). Start Docker or Colima and retry. Note: container images must target linux/amd64.`
);
return { code: 1 };
}
const args = ["containers", subcommand, ...rest];
if (options.tag !== void 0) {
args.push("--tag", options.tag);
}
if (options.push === true) {
args.push("--push");
}
if (options.env !== void 0) {
args.push("--env", options.env);
}
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(`running ${descriptor.command} ${descriptor.args.join(" ")}`);
const spawner = options.spawner ?? defaultSpawner;
const result = await spawner(descriptor);
return { code: result.code, descriptor };
};
const execute = defineHandler(async ({ argument, cwd, logger, options }) => {
const result = await runContainersCommand({
argument,
cwd,
env: options.env,
logger,
push: options.push === true,
tag: options.tag
});
return { code: result.code };
});
export { execute, runContainersCommand };