@principal-ai/quality-lens-cli 0.1.41 → 0.1.42
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
|
@@ -1103,7 +1103,7 @@ jobs:
|
|
|
1103
1103
|
name: quality-lens-results-\${{ github.sha }}
|
|
1104
1104
|
path: results.json
|
|
1105
1105
|
if-no-files-found: warn
|
|
1106
|
-
`,h6e={eslint:{bin:"eslint",args:[".","--ext",".ts,.tsx,.js,.jsx","--format","json"]},lint:{bin:"eslint",args:[".","--ext",".ts,.tsx,.js,.jsx","--format","json"]},typescript:{bin:"tsc",args:["--noEmit","--pretty","false","--listFiles"]},typecheck:{bin:"tsc",args:["--noEmit","--pretty","false","--listFiles"]},jest:{bin:"jest",args:["--passWithNoTests","--json","--no-colors"]},test:{bin:"jest",args:["--passWithNoTests","--json","--no-colors"]},prettier:{bin:"prettier",args:["--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"]},format:{bin:"prettier",args:["--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"]},knip:{bin:"knip",args:["--reporter","json"]},alexandria:{bin:"alexandria",args:["coverage","--json"]},docs:{bin:"alexandria",args:["coverage","--json"]}},Goe={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","--listFiles"],typecheck:["npx","--yes","tsc","--noEmit","--pretty","false","--listFiles"],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","--log-level","debug"],format:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"],knip:["npx","--yes","knip","--reporter","json"],alexandria:["npx","--yes","@principal-ai/alexandria-cli","coverage","--json"],docs:["npx","--yes","@principal-ai/alexandria-cli","coverage","--json"]};async function hfr(_,c){let f=dE.join(_,"node_modules",".bin",c);try{return await MT.access(f),!0}catch{return!1}}function gfr(_,c){let f=Date.now(),g=h6e[_];return g?new Promise(S=>{let k="",J="",fe=`"${dE.join(c,"node_modules",".bin",g.bin)}" ${g.args.join(" ")}`,me=(0,g6e.spawn)(fe,[],{cwd:c,shell:!0});me.stdout&&me.stdout.on("data",be=>{k+=be.toString()}),me.stderr&&me.stderr.on("data",be=>{J+=be.toString()}),me.on("close",be=>{S({success:be!==null&&be!==127,stdout:k,stderr:J,duration:Date.now()-f,exitCode:be??1})}),me.on("error",be=>{S({success:!1,stdout:k,stderr:J||be.message,duration:Date.now()-f,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No local command defined for lens: ${_}`,duration:Date.now()-f,exitCode:1})}function yfr(_,c){let f=Date.now(),g=Goe[_];return g?new Promise(S=>{let k="",J="",ee=g.join(" "),fe=(0,g6e.spawn)(ee,[],{cwd:c,shell:!0});fe.stdout&&fe.stdout.on("data",me=>{k+=me.toString()}),fe.stderr&&fe.stderr.on("data",me=>{J+=me.toString()}),fe.on("close",me=>{S({success:me!==null&&me!==127,stdout:k,stderr:J,duration:Date.now()-f,exitCode:me??1})}),fe.on("error",me=>{S({success:!1,stdout:k,stderr:J||me.message,duration:Date.now()-f,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No npx command defined for lens: ${_}`,duration:Date.now()-f,exitCode:1})}async function Fpt(_){let c=await kpt(_,"");return new $oe().build({files:c,rootPath:_})}async function kpt(_,c){let f=[],g=await MT.readdir(_,{withFileTypes:!0});for(let S of g){if(vfr(S.name))continue;let k=dE.join(_,S.name),J=c?`${c}/${S.name}`:S.name;if(S.isDirectory()){let ee=await kpt(k,J);f.push(...ee)}else S.isFile()&&f.push(J)}return f}function vfr(_){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".turbo",".cache"].includes(_)||_.startsWith(".")}async function Dfr(_){let c=new h$,f=new Joe,g=new qoe,S=new Voe;try{let k=dE.resolve(_.path);console.log(`Scanning repository: ${k}`);let J=await Fpt(k);g.setFileTree(J);let ee=await c.extractPackages(J,k);ee.length===0&&(console.warn("No packages found in repository"),process.exit(1)),console.log(`Found ${ee.length} package(s)`);let fe=_.lenses?_.lenses.split(",").map(Ie=>Ie.trim()):null,me=[];for(let Ie of ee){let X=Ie.packageData.availableCommands?.filter(We=>!(!We.isLensCommand||fe&&!fe.includes(We.lensId||"")||We.name.includes("watch")||We.name.includes(":dev")));if(!X||X.length===0){console.log(`Skipping ${Ie.packageData.name} (no lens commands)`);continue}console.log(`
|
|
1106
|
+
`,h6e={eslint:{bin:"eslint",args:[".","--ext",".ts,.tsx,.js,.jsx","--format","json"]},lint:{bin:"eslint",args:[".","--ext",".ts,.tsx,.js,.jsx","--format","json"]},typescript:{bin:"tsc",args:["--noEmit","--pretty","false","--listFiles"]},typecheck:{bin:"tsc",args:["--noEmit","--pretty","false","--listFiles"]},jest:{bin:"jest",args:["--passWithNoTests","--json","--no-colors","--coverage"]},test:{bin:"jest",args:["--passWithNoTests","--json","--no-colors","--coverage"]},prettier:{bin:"prettier",args:["--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"]},format:{bin:"prettier",args:["--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"]},knip:{bin:"knip",args:["--reporter","json"]},alexandria:{bin:"alexandria",args:["coverage","--json"]},docs:{bin:"alexandria",args:["coverage","--json"]}},Goe={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","--listFiles"],typecheck:["npx","--yes","tsc","--noEmit","--pretty","false","--listFiles"],jest:["npx","--yes","jest","--passWithNoTests","--json","--no-colors","--coverage"],test:["npx","--yes","jest","--passWithNoTests","--json","--no-colors","--coverage"],prettier:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"],format:["npx","--yes","prettier","--check",".","--no-error-on-unmatched-pattern","--no-color","--log-level","debug"],knip:["npx","--yes","knip","--reporter","json"],alexandria:["npx","--yes","@principal-ai/alexandria-cli","coverage","--json"],docs:["npx","--yes","@principal-ai/alexandria-cli","coverage","--json"]};async function hfr(_,c){let f=dE.join(_,"node_modules",".bin",c);try{return await MT.access(f),!0}catch{return!1}}function gfr(_,c){let f=Date.now(),g=h6e[_];return g?new Promise(S=>{let k="",J="",fe=`"${dE.join(c,"node_modules",".bin",g.bin)}" ${g.args.join(" ")}`,me=(0,g6e.spawn)(fe,[],{cwd:c,shell:!0});me.stdout&&me.stdout.on("data",be=>{k+=be.toString()}),me.stderr&&me.stderr.on("data",be=>{J+=be.toString()}),me.on("close",be=>{S({success:be!==null&&be!==127,stdout:k,stderr:J,duration:Date.now()-f,exitCode:be??1})}),me.on("error",be=>{S({success:!1,stdout:k,stderr:J||be.message,duration:Date.now()-f,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No local command defined for lens: ${_}`,duration:Date.now()-f,exitCode:1})}function yfr(_,c){let f=Date.now(),g=Goe[_];return g?new Promise(S=>{let k="",J="",ee=g.join(" "),fe=(0,g6e.spawn)(ee,[],{cwd:c,shell:!0});fe.stdout&&fe.stdout.on("data",me=>{k+=me.toString()}),fe.stderr&&fe.stderr.on("data",me=>{J+=me.toString()}),fe.on("close",me=>{S({success:me!==null&&me!==127,stdout:k,stderr:J,duration:Date.now()-f,exitCode:me??1})}),fe.on("error",me=>{S({success:!1,stdout:k,stderr:J||me.message,duration:Date.now()-f,exitCode:1})})}):Promise.resolve({success:!1,stdout:"",stderr:`No npx command defined for lens: ${_}`,duration:Date.now()-f,exitCode:1})}async function Fpt(_){let c=await kpt(_,"");return new $oe().build({files:c,rootPath:_})}async function kpt(_,c){let f=[],g=await MT.readdir(_,{withFileTypes:!0});for(let S of g){if(vfr(S.name))continue;let k=dE.join(_,S.name),J=c?`${c}/${S.name}`:S.name;if(S.isDirectory()){let ee=await kpt(k,J);f.push(...ee)}else S.isFile()&&f.push(J)}return f}function vfr(_){return["node_modules",".git",".next",".nuxt","dist","build","coverage",".turbo",".cache"].includes(_)||_.startsWith(".")}async function Dfr(_){let c=new h$,f=new Joe,g=new qoe,S=new Voe;try{let k=dE.resolve(_.path);console.log(`Scanning repository: ${k}`);let J=await Fpt(k);g.setFileTree(J);let ee=await c.extractPackages(J,k);ee.length===0&&(console.warn("No packages found in repository"),process.exit(1)),console.log(`Found ${ee.length} package(s)`);let fe=_.lenses?_.lenses.split(",").map(Ie=>Ie.trim()):null,me=[];for(let Ie of ee){let X=Ie.packageData.availableCommands?.filter(We=>!(!We.isLensCommand||fe&&!fe.includes(We.lensId||"")||We.name.includes("watch")||We.name.includes(":dev")));if(!X||X.length===0){console.log(`Skipping ${Ie.packageData.name} (no lens commands)`);continue}console.log(`
|
|
1107
1107
|
Running lenses for ${Ie.packageData.name}...`);let rt=Ie.packageData.path||"",Ue=rt?dE.join(k,rt):k;for(let We of X){let At=We.lensId||"unknown";console.log(` - ${At}: ${We.name}`);try{let Vt;if(_.install&&(h6e[At]||Goe[At])){let Ir=h6e[At],qr=Ir?await hfr(Ue,Ir.bin):!1,ui,Li;qr&&Ir?(console.log(` [local] Using installed ${Ir.bin}`),ui=await gfr(At,Ue),Li=`node_modules/.bin/${Ir.bin} ${Ir.args.join(" ")}`):Goe[At]?(console.log(" [npx] Tool not installed locally, using npx"),ui=await yfr(At,Ue),Li=Goe[At].join(" ")):(ui={success:!1,stdout:"",stderr:`No command available for lens: ${At}`,duration:0,exitCode:1},Li="none");let Ln=dfr(At,ui.stdout,ui.stderr,ui.exitCode,Ue);Vt={success:ui.success,toolName:At,command:Li,packagePath:rt,exitCode:ui.exitCode,duration:ui.duration,stdout:ui.stdout,stderr:ui.stderr,lensResult:Ln}}else Vt=await f.executeTool({repoPath:k,packageLayer:Ie,packageCommand:We});me.push({package:Ie.packageData.name,packagePath:Ie.packageData.path,lens:At,command:We.name,result:Vt,timestamp:Date.now()}),console.log(` ${Vt.success?"\u2713":"\u2717"} ${Vt.success?"Success":"Failed"} (${Vt.duration}ms)`)}catch(Vt){let Ir=Vt instanceof Error?Vt.message:String(Vt);console.error(` \u2717 Error: ${Ir}`),me.push({package:Ie.packageData.name,packagePath:Ie.packageData.path,lens:At,command:We.name,error:Ir,timestamp:Date.now()})}}}if(_.format==="json"){let Ie=g.format(me);_.output?(await MT.writeFile(_.output,Ie,"utf-8"),console.log(`
|
|
1108
1108
|
Results written to: ${_.output}`)):console.log(`
|
|
1109
1109
|
`+Ie)}else S.report(me);let be=me.some(Ie=>Ie.error||!Ie.result?.success);process.exit(be?1:0)}catch(k){let J=k instanceof Error?k.message:String(k);console.error("Fatal error:",J),process.exit(1)}}jKe(sxe(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}),_=>Dfr(_)).command("list [path]","List available lenses in repository",_=>_.positional("path",{describe:"Repository path",type:"string",default:process.cwd()}),async _=>{let c=dE.resolve(_.path??process.cwd()),f=new h$;console.log(`Scanning repository: ${c}`);let g=await Fpt(c);(await f.extractPackages(g,c)).forEach(k=>{console.log(`
|