UNPKG

@lunora/cli

Version:

The Lunora CLI: init, dev, deploy, codegen, migrate, seed, doctor, insights, logs, registry, and the rest of the project commands

2 lines (1 loc) 2.79 kB
import{runCodegen as g}from"@lunora/codegen";import{resolveTargetOrThrow as d,resolveDeployDriver as m}from"@lunora/config";import{p as f}from"../packem_shared/api-spec-lYyq4vL6.mjs";import{r as p}from"../packem_shared/codegen-error-C04fGQjf.mjs";import{d as u}from"../packem_shared/command-DwC11Cwe.mjs";import{r as h}from"../packem_shared/platform-diagnostics-uOXqysk3.mjs";import{r as w}from"../packem_shared/post-codegen-hook-DRdEoTsQ.mjs";import{r as v}from"../packem_shared/schema-drift-gate-AscQpYH5.mjs";import{validateWranglerProject as S}from"@lunora/config/cloudflare";const b=async(e,o,a=[],c)=>{const i={crons:a,projectRoot:e},n=m(c);try{const r=await n.infer(i),s=[r.shardNamespaces.length>0?`${String(r.shardNamespaces.length)} shard namespace(s)`:void 0,r.queues.length>0?`${String(r.queues.length)} queue(s)`:void 0,r.workflows.length>0?`${String(r.workflows.length)} workflow(s)`:void 0,r.containers.length>0?`${String(r.containers.length)} container(s)`:void 0,r.globalDatabase?"global database":void 0,r.objectStorage?"object storage":void 0,r.keyValueStore?"key-value store":void 0].filter(l=>l!==void 0);s.length>0&&o.info(`${n.name} target requires: ${s.join(", ")}`)}catch{}const t=await n.provision(i);t.changed&&o.success(`provisioned: ${t.added.join(", ")}${t.configPath??"wrangler.jsonc"}`);for(const r of t.warnings)o.warn(r)},j=async e=>{const o=e.cwd??process.cwd(),a=d(o,e.target);e.logger.info("running codegen");let c;try{c=g({apiSpec:e.apiSpec,projectRoot:o,target:a}),e.logger.success("codegen complete"),h(c.platformDiagnostics,e.logger)}catch(r){const s=r instanceof Error?r.message:String(r);return e.logger.error(p(r)),{code:1,error:`codegen failed: ${s}`,validation:{problems:[],wranglerPath:void 0}}}const i=await w({cwd:o,logger:e.logger,spawner:e.spawner});if(i.error!==void 0)return e.logger.error(i.error),{code:1,error:i.error,validation:{problems:[],wranglerPath:void 0}};const n=v({allowDrift:e.allowSchemaDrift===!0,codegen:c,command:"prepare",logger:e.logger,updateBaseline:e.updateSchemaBaseline===!0});if(n.blocked)return{code:1,error:"schema drift gate blocked prepare",schemaDrift:{blocked:!0,reason:n.reason},validation:{problems:[],wranglerPath:void 0}};await b(o,e.logger,c.cronTriggers,a);const t=S({projectRoot:o});if(t.problems.length>0){e.logger.error("wrangler.jsonc validation failed:");for(const r of t.problems)e.logger.error(` - ${r}`);return{code:1,error:"wrangler validation failed",validation:t}}return n.rebless?.(),e.logger.success("project is ready to deploy"),{code:0,validation:t}},R=u(({cwd:e,logger:o,options:a})=>j({allowSchemaDrift:a.allowSchemaDrift===!0,apiSpec:f(a.apiSpec),cwd:e,logger:o,target:a.target,updateSchemaBaseline:a.updateSchemaBaseline===!0}));export{R as execute,j as runPrepareCommand};