UNPKG

@lunora/cli

Version:

The Lunora CLI: init, dev, deploy, codegen, run, reset, and migrate commands

53 lines (50 loc) 2.28 kB
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 };