@lunora/cli
Version:
The Lunora CLI: init, dev, deploy, codegen, migrate, seed, doctor, insights, logs, registry, and the rest of the project commands
3 lines (2 loc) • 2.26 kB
JavaScript
import{mkdtempSync as u,rmSync as d,existsSync as l,readdirSync as y,statSync as m}from"node:fs";import{tmpdir as p}from"node:os";import{join as f,relative as $}from"node:path";import{d as S}from"../packem_shared/command-DwC11Cwe.mjs";import{e as g,d as w}from"../packem_shared/detect-package-manager-DSaAqRof.mjs";import{defaultSpawner as z}from"../packem_shared/createRecordingSpawner-DJlNacZ6.mjs";const B=e=>{const t=[],r=n=>{for(const i of y(n)){const s=f(n,i),o=m(s);o.isDirectory()?r(s):o.isFile()&&t.push({path:$(e,s),sizeBytes:o.size})}};return r(e),t},c=e=>e<1024?`${String(e)} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(2)} MiB`,F=e=>{const t=B(e),r=t.toSorted((s,o)=>o.sizeBytes-s.sizeBytes),n=t.reduce((s,o)=>s+o.sizeBytes,0);return{generatedFiles:t.filter(s=>s.path.includes("_generated")),outdir:e,topModules:r.slice(0,10),totalBytes:n,totalFiles:t.length}},h=(e,t)=>{if(t.info(`outdir: ${e.outdir}`),t.info(`total: ${String(e.totalFiles)} files, ${c(e.totalBytes)}`),e.topModules.length>0){t.info(""),t.info("top modules by size:");for(const r of e.topModules)t.info(` ${c(r.sizeBytes).padStart(10," ")} ${r.path}`)}if(e.generatedFiles.length>0){t.info(""),t.info(`_generated/ files: ${String(e.generatedFiles.length)}`);for(const r of e.generatedFiles)t.info(` ${c(r.sizeBytes).padStart(10," ")} ${r.path}`)}},x=async e=>{const t=e.cwd??process.cwd(),{logger:r}=e;let n,i,s=!1;if(e.inspectOnly)n=e.inspectOnly;else{n=u(f(p(),"lunora-analyze-")),s=!0;const o=g(w(t),"wrangler",["deploy","--dry-run","--outdir",n]);i={args:o.args,command:o.command,cwd:t},r.info(`analyze: building via ${i.command} ${i.args.join(" ")}`);const a=await(e.spawner??z)(i);if(a.code!==0)return r.error(`analyze: wrangler dry-run failed (exit ${String(a.code)})`),d(n,{force:!0,recursive:!0}),{code:a.code,descriptor:i,report:void 0}}try{if(!l(n))return r.error(`analyze: outdir not found at ${n}`),{code:1,descriptor:i,report:void 0};const o=F(n);return e.json?process.stdout.write(`${JSON.stringify(o,void 0,2)}
`):h(o,r),{code:0,descriptor:i,report:o}}finally{if(s&&l(n))try{d(n,{force:!0,recursive:!0})}catch{}}},C=S(({cwd:e,logger:t,options:r})=>x({cwd:e,json:r.json===!0,logger:t}));export{C as execute,x as runAnalyzeCommand};