UNPKG

@lunora/cli

Version:

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

2 lines (1 loc) 2.43 kB
import{runCodegen as i}from"@lunora/codegen";import{validateWranglerProject as s,inferLunoraBindings as g,reconcileWranglerBindings as l,reconcileWranglerCompatibilityDate as d,reconcileWranglerCrons as p}from"@lunora/config";import{r as m}from"../packem_shared/api-spec-BENwiyUa.mjs";import{l as f}from"../packem_shared/codegen-error-DJN6pTH5.mjs";import{i as w}from"../packem_shared/command-Bjv4VmYA.mjs";import{k as u}from"../packem_shared/schema-drift-gate-CpqG-xP4.mjs";const h=async(r,n,a=[])=>{try{const e=await g({projectRoot:r}),o=l(r,e);o.changed&&n.success(`provisioned bindings: ${o.added.join(", ")}${o.wranglerPath??"wrangler.jsonc"}`);for(const t of o.warnings)n.warn(t)}catch(e){const o=e instanceof Error?e.message:String(e);n.warn(`binding inference skipped: ${o}`)}try{const e=d(r);e.changed&&n.success(`bumped compatibility_date to ${e.date??"unknown"} (Workers Cache enabled) → ${e.wranglerPath??"wrangler.jsonc"}`)}catch(e){const o=e instanceof Error?e.message:String(e);n.warn(`compatibility date sync skipped: ${o}`)}try{const e=p(r,a);e.changed&&n.success(`synced ${String(a.length)} cron trigger(s) → ${e.wranglerPath??"wrangler.jsonc"}`)}catch(e){const o=e instanceof Error?e.message:String(e);n.warn(`cron trigger sync skipped: ${o}`)}},b=async r=>{const n=r.cwd??process.cwd();r.logger.info("running codegen");let a;try{a=i({apiSpec:r.apiSpec,projectRoot:n}),r.logger.success("codegen complete")}catch(t){const c=t instanceof Error?t.message:String(t);return r.logger.error(f(t)),{code:1,error:`codegen failed: ${c}`,validation:{problems:[],wranglerPath:void 0}}}const e=u({allowDrift:r.allowSchemaDrift===!0,codegen:a,logger:r.logger,updateBaseline:r.updateSchemaBaseline===!0});if(e.blocked)return{code:1,error:"schema drift gate blocked prepare",schemaDrift:{blocked:!0,reason:e.reason},validation:{problems:[],wranglerPath:void 0}};await h(n,r.logger,a.cronTriggers);const o=s({projectRoot:n});if(o.problems.length>0){r.logger.error("wrangler.jsonc validation failed:");for(const t of o.problems)r.logger.error(` - ${t}`);return{code:1,error:"wrangler validation failed",validation:o}}return e.rebless?.(),r.logger.success("project is ready to deploy"),{code:0,validation:o}},P=w(({cwd:r,logger:n,options:a})=>b({allowSchemaDrift:a.allowSchemaDrift===!0,apiSpec:m(a.apiSpec),cwd:r,logger:n,updateSchemaBaseline:a.updateSchemaBaseline===!0}));export{P as execute,b as runPrepareCommand};