@principal-ai/quality-lens-cli 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +2 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1030,8 +1030,8 @@ jobs:
|
|
|
1030
1030
|
name: quality-lens-results-\${{ github.sha }}
|
|
1031
1031
|
path: results.json
|
|
1032
1032
|
if-no-files-found: warn
|
|
1033
|
-
`,Hke={eslint:["npx","eslint",".","--ext",".ts,.tsx,.js,.jsx"],typescript:["npx","tsc","--noEmit"],jest:["npx","jest","--passWithNoTests"],prettier:["npx","prettier","--check","."],knip:["npx","knip"],alexandria:["npx","@principal-ai/alexandria-cli","lint"]};function Dlr(p,c){let _=Date.now(),g=Hke[p];return g?new Promise(S=>{let w="",z="",ie=g.join(" "),de=(0,$_t.spawn)(ie,[],{cwd:c,shell:!0});de.stdout&&de.stdout.on("data",be=>{w+=be.toString()}),de.stderr&&de.stderr.on("data",be=>{z+=be.toString()}),de.on("close",be=>{S({success:be
|
|
1034
|
-
Running lenses for ${Oe.packageData.name}...`);let ut=Oe.packageData.path||"",Ye=ut?kk.join(w,ut):w;for(let We of Y){let Ut=We.lensId||"unknown";console.log(` - ${Ut}: ${We.name}`);try{let _r;if(p.install&&Hke[Ut]){let Hr=await Dlr(Ut,Ye);_r={success:Hr.success,toolName:Ut,command:Hke[Ut].join(" "),packagePath:ut,exitCode:Hr.
|
|
1033
|
+
`,Hke={eslint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx"],lint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx"],typescript:["npx","--yes","tsc","--noEmit"],typecheck:["npx","--yes","tsc","--noEmit"],jest:["npx","--yes","jest","--passWithNoTests"],test:["npx","--yes","jest","--passWithNoTests"],prettier:["npx","--yes","prettier","--check","."],format:["npx","--yes","prettier","--check","."],knip:["npx","--yes","knip"],alexandria:["npx","--yes","@principal-ai/alexandria-cli","lint"],docs:["npx","--yes","@principal-ai/alexandria-cli","lint"]};function Dlr(p,c){let _=Date.now(),g=Hke[p];return g?new Promise(S=>{let w="",z="",ie=g.join(" "),de=(0,$_t.spawn)(ie,[],{cwd:c,shell:!0});de.stdout&&de.stdout.on("data",be=>{w+=be.toString()}),de.stderr&&de.stderr.on("data",be=>{z+=be.toString()}),de.on("close",be=>{S({success:be!==null&&be!==127,stdout:w,stderr:z,duration:Date.now()-_,exitCode:be??1})}),de.on("error",be=>{S({success:!1,stdout:w,stderr:z||be.message,duration:Date.now()-_,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No npx command defined for lens: ${p}`,duration:Date.now()-_,exitCode:1})}async function H_t(p){let c=await K_t(p,"");return new Roe().build({files:c,rootPath:p})}async function K_t(p,c){let _=[],g=await Ik.readdir(p,{withFileTypes:!0});for(let S of g){if(blr(S.name))continue;let w=kk.join(p,S.name),z=c?`${c}/${S.name}`:S.name;if(S.isDirectory()){let ie=await K_t(w,z);_.push(...ie)}else S.isFile()&&_.push(z)}return _}function blr(p){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".turbo",".cache"].includes(p)||p.startsWith(".")}async function Clr(p){let c=new oG,_=new Ioe,g=new woe,S=new Loe;try{let w=kk.resolve(p.path);console.log(`Scanning repository: ${w}`);let z=await H_t(w),ie=await c.extractPackages(z,w);ie.length===0&&(console.warn("No packages found in repository"),process.exit(1)),console.log(`Found ${ie.length} package(s)`);let de=p.lenses?p.lenses.split(",").map(Oe=>Oe.trim()):null,be=[];for(let Oe of ie){let Y=Oe.packageData.availableCommands?.filter(We=>!(!We.isLensCommand||de&&!de.includes(We.lensId||"")));if(!Y||Y.length===0){console.log(`Skipping ${Oe.packageData.name} (no lens commands)`);continue}console.log(`
|
|
1034
|
+
Running lenses for ${Oe.packageData.name}...`);let ut=Oe.packageData.path||"",Ye=ut?kk.join(w,ut):w;for(let We of Y){let Ut=We.lensId||"unknown";console.log(` - ${Ut}: ${We.name}`);try{let _r;if(p.install&&Hke[Ut]){let Hr=await Dlr(Ut,Ye);_r={success:Hr.success,toolName:Ut,command:Hke[Ut].join(" "),packagePath:ut,exitCode:Hr.exitCode,duration:Hr.duration,stdout:Hr.stdout,stderr:Hr.stderr}}else _r=await _.executeTool({repoPath:w,packageLayer:Oe,packageCommand:We});be.push({package:Oe.packageData.name,packagePath:Oe.packageData.path,lens:Ut,command:We.name,result:_r,timestamp:Date.now()}),console.log(` ${_r.success?"\u2713":"\u2717"} ${_r.success?"Success":"Failed"} (${_r.duration}ms)`)}catch(_r){console.error(` \u2717 Error: ${_r.message}`),be.push({package:Oe.packageData.name,packagePath:Oe.packageData.path,lens:Ut,command:We.name,error:_r.message,timestamp:Date.now()})}}}if(p.format==="json"){let Oe=g.format(be);p.output?(await Ik.writeFile(p.output,Oe,"utf-8"),console.log(`
|
|
1035
1035
|
Results written to: ${p.output}`)):console.log(`
|
|
1036
1036
|
`+Oe)}else S.report(be);let Ee=be.some(Oe=>Oe.error||!Oe.result?.success);process.exit(Ee?1:0)}catch(w){console.error("Fatal error:",w.message),process.exit(1)}}hKe(HEe(process.argv)).command("run [path]","Run quality lenses on repository",p=>p.positional("path",{describe:"Repository path",type:"string",default:process.cwd()}).option("output",{alias:"o",describe:"Output file for results",type:"string"}).option("lenses",{describe:"Specific lenses to run (comma-separated)",type:"string",example:"eslint,jest,typescript"}).option("format",{describe:"Output format",choices:["json","console"],default:"console"}).option("install",{alias:"i",describe:"Run tools via npx (no local dependencies required)",type:"boolean",default:!1}),p=>Clr(p)).command("list [path]","List available lenses in repository",p=>p.positional("path",{describe:"Repository path",type:"string",default:process.cwd()}),async p=>{let c=kk.resolve(p.path),_=new oG;console.log(`Scanning repository: ${c}`);let g=await H_t(c);(await _.extractPackages(g,c)).forEach(w=>{console.log(`
|
|
1037
1037
|
${w.packageData.name}:`),console.log(` Available: ${w.qualityMetrics?.availableLenses?.join(", ")||"none"}`),console.log(` Missing: ${w.qualityMetrics?.missingLenses?.join(", ")||"none"}`)})}).command("init [path]","Initialize Quality Lens GitHub Action in repository",p=>p.positional("path",{describe:"Repository path",type:"string",default:process.cwd()}).option("force",{alias:"f",describe:"Overwrite existing workflow file",type:"boolean",default:!1}),async p=>{let c=kk.resolve(p.path),_=kk.join(c,".github","workflows"),g=kk.join(_,"quality-lens.yml");try{try{await Ik.access(g),p.force||(console.log(`Workflow already exists at ${g}`),console.log("Use --force to overwrite"),process.exit(1))}catch{}await Ik.mkdir(_,{recursive:!0}),await Ik.writeFile(g,vlr,"utf-8"),console.log("Quality Lens GitHub Action initialized!"),console.log(`
|