@principal-ai/quality-lens-cli 0.1.16 → 0.1.17
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 +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1030,7 +1030,7 @@ jobs:
|
|
|
1030
1030
|
name: quality-lens-results-\${{ github.sha }}
|
|
1031
1031
|
path: results.json
|
|
1032
1032
|
if-no-files-found: warn
|
|
1033
|
-
`,Qke={eslint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx","--format","json"],lint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx","--format","json"],typescript:["npx","--yes","tsc","--noEmit","--pretty","false"],typecheck:["npx","--yes","tsc","--noEmit","--pretty","false"],jest:["npx","--yes","jest","--passWithNoTests","--json","--no-colors"],test:["npx","--yes","jest","--passWithNoTests","--json","--no-colors"],prettier:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern"],format:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern"],knip:["npx","--yes","knip","--reporter","json"],alexandria:["npx","--yes","@principal-ai/alexandria-cli","lint","--json","--errors-only"],docs:["npx","--yes","@principal-ai/alexandria-cli","lint","--json","--errors-only"]};function Slr(_,c){let p=Date.now(),g=Qke[_];return g?new Promise(S=>{let w="",z="",ie=g.join(" "),de=(0,H_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()-p,exitCode:be??1})}),de.on("error",be=>{S({success:!1,stdout:w,stderr:z||be.message,duration:Date.now()-p,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No npx command defined for lens: ${_}`,duration:Date.now()-p,exitCode:1})}async function K_t(_){let c=await Q_t(_,"");return new Moe().build({files:c,rootPath:_})}async function Q_t(_,c){let p=[],g=await wk.readdir(_,{withFileTypes:!0});for(let S of g){if(Elr(S.name))continue;let w=Ik.join(_,S.name),z=c?`${c}/${S.name}`:S.name;if(S.isDirectory()){let ie=await Q_t(w,z);p.push(...ie)}else S.isFile()&&p.push(z)}return p}function Elr(_){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".turbo",".cache"].includes(_)||_.startsWith(".")}async function xlr(_){let c=new cG,p=new woe,g=new Poe,S=new Roe;try{let w=Ik.resolve(_.path);console.log(`Scanning repository: ${w}`);let z=await K_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=_.lenses?_.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(`
|
|
1033
|
+
`,Qke={eslint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx","--format","json"],lint:["npx","--yes","eslint",".","--ext",".ts,.tsx,.js,.jsx","--format","json"],typescript:["npx","--yes","tsc","--noEmit","--pretty","false"],typecheck:["npx","--yes","tsc","--noEmit","--pretty","false"],jest:["npx","--yes","jest","--passWithNoTests","--json","--no-colors"],test:["npx","--yes","jest","--passWithNoTests","--json","--no-colors"],prettier:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern","--no-color"],format:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern","--no-color"],knip:["npx","--yes","knip","--reporter","json"],alexandria:["npx","--yes","@principal-ai/alexandria-cli","lint","--json","--errors-only"],docs:["npx","--yes","@principal-ai/alexandria-cli","lint","--json","--errors-only"]};function Slr(_,c){let p=Date.now(),g=Qke[_];return g?new Promise(S=>{let w="",z="",ie=g.join(" "),de=(0,H_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()-p,exitCode:be??1})}),de.on("error",be=>{S({success:!1,stdout:w,stderr:z||be.message,duration:Date.now()-p,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No npx command defined for lens: ${_}`,duration:Date.now()-p,exitCode:1})}async function K_t(_){let c=await Q_t(_,"");return new Moe().build({files:c,rootPath:_})}async function Q_t(_,c){let p=[],g=await wk.readdir(_,{withFileTypes:!0});for(let S of g){if(Elr(S.name))continue;let w=Ik.join(_,S.name),z=c?`${c}/${S.name}`:S.name;if(S.isDirectory()){let ie=await Q_t(w,z);p.push(...ie)}else S.isFile()&&p.push(z)}return p}function Elr(_){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".turbo",".cache"].includes(_)||_.startsWith(".")}async function xlr(_){let c=new cG,p=new woe,g=new Poe,S=new Roe;try{let w=Ik.resolve(_.path);console.log(`Scanning repository: ${w}`);let z=await K_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=_.lenses?_.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
1034
|
Running lenses for ${Oe.packageData.name}...`);let ut=Oe.packageData.path||"",Ye=ut?Ik.join(w,ut):w;for(let We of Y){let Ut=We.lensId||"unknown";console.log(` - ${Ut}: ${We.name}`);try{let _r;if(_.install&&Qke[Ut]){let Gr=await Slr(Ut,Ye),Pn=blr(Ut,Gr.stdout,Gr.stderr,Gr.exitCode,Ye);_r={success:Gr.success,toolName:Ut,command:Qke[Ut].join(" "),packagePath:ut,exitCode:Gr.exitCode,duration:Gr.duration,stdout:Gr.stdout,stderr:Gr.stderr,lensResult:Pn}}else _r=await p.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(_.format==="json"){let Oe=g.format(be);_.output?(await wk.writeFile(_.output,Oe,"utf-8"),console.log(`
|
|
1035
1035
|
Results written to: ${_.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)}}yKe(KEe(process.argv)).command("run [path]","Run quality lenses on repository",_=>_.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}),_=>xlr(_)).command("list [path]","List available lenses in repository",_=>_.positional("path",{describe:"Repository path",type:"string",default:process.cwd()}),async _=>{let c=Ik.resolve(_.path),p=new cG;console.log(`Scanning repository: ${c}`);let g=await K_t(c);(await p.extractPackages(g,c)).forEach(w=>{console.log(`
|