@ycmd/run
Version:
LSK.js CLI Creds is the easiest way to manage GitHub / Gitlab secrets and credentials
13 lines (11 loc) • 4.28 kB
JavaScript
import { readdir, readFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import { Err } from '@lsk4/err';
import { loadConfig, resolvePaths, log, loadDefaultConfig, getShortPath, joinArgs, getPackageName, createLogger, findPath, getPaths, undefault, isWorkspaceRoot } from '@ycmd/utils';
import { map } from 'fishbird';
import { argvToArgs } from '@ycmd/helpers';
import { spawn } from '@ycmd/spawn';
var M=Object.defineProperty;var p=(r,e)=>M(r,"name",{value:e,configurable:!0});var N=p(async()=>{let r=process;r.lskrunDisableAutorun=!0;},"disableAutorun"),S=p(async()=>{let r=process;delete r.lskrunDisableAutorun;},"enableAutorun");async function j(r,e={}){let x=process,[f,...$]=r.trim().split(" ").filter(Boolean),{argv:g={}}=e,w=[...$,...e.args||[],...argvToArgs(g)],m=e.cwd||x.cwd(),l=e.ctx||x.pathexec?.rootRun?.ctx||{};l.stack||(l.stack=[]);let y=`${e.cmdName||"ycmd"} ${r} ${joinArgs(w)}`;l.stack.unshift({command:y,options:e});let t=e.name||getPackageName({cwd:m}),o=f.replace(/:/g,"-"),n=e.log||createLogger({name:t}),c={name:o,exts:[".sh",".js",".cjs",".mjs",".ts",".cts",".mts"],nodemodules:1,local:1,script:o},a=findPath(c);if(n.debug(`\u276F ${y}`),l.stack[0].filename=a,!a){let i=`Missing script: "${f}"`;throw new Err("YCMD_MISSING_SCRIPT",i,{data:{pathOptions:c,paths:getPaths(c)}})}let s,b=[".sh",".ts",".cts",".mts"];try{if(b.some(k=>a.endsWith(k)))return n.trace(`\u276F\u276F exec ${getShortPath(a)}`),s=await P(`${a} ${w.join(" ")}`),s;n.trace(`\u276F\u276F require ${getShortPath(a)}`);let i=undefault(await import(a)),h;if(typeof i=="function")h=i;else if(i?.run&&typeof i.run=="function")h=i.run;else if(i?.main&&typeof i.main=="function")h=i.main;else return n.warn(`[!incorrectExports] ${a}`),n.trace(`[!incorrectExports] ${a}`,{content:i}),null;h&&(s=await h({cwd:m,isRoot:isWorkspaceRoot({cwd:m}),args:w,argv:g,options:e,ctx:l,log:n})),l.stack.shift();}catch(i){throw i}return s}p(j,"pathexec");async function P(r,e={}){let f=["lsk run","lsk","lsk4","ycmd"].find(t=>r.startsWith(`${t} `));if(f)return j(r.slice(`${f} `.length),{...e,cmdName:f});let{args:$=[],argv:g,...w}=e,{silence:m}=e,l="inherit";m==="all"?l=["inherit","ignore","ignore"]:m&&(l=["inherit","ignore","inherit"]);let d=[...$,...argvToArgs(g)];return await spawn(r,d,{shell:!0,stdio:l,...w})}p(P,"shell");var V=p(r=>r?.command||r?.handler||r?.main,"isCommand"),kt=p(async r=>{let{exts:e}=r,x=r.cwd||process.cwd(),f=await loadConfig({cwd:x,default:!0}),$=f?.config?.scripts,g=f?.path,w=g?resolve(g,".."):x,m=[];$?m=await resolvePaths($,{cwd:w}):(log.warn("!config.scripts, use getPaths()"),m=(await loadDefaultConfig({cwd:x})).scripts),log.trace("[configPath]",g),log.trace("[configDirPath]",w),log.trace("[loadedConfig]",f),log.trace("[scripts]",$),log.trace("[dirs]",m),log.trace("[short scripts]",m.map(t=>getShortPath(t)));let l=await map(m,async t=>{try{return (await readdir(t)).filter(n=>(e||[]).some(c=>n.endsWith(c))).map(n=>({name:n.replace(/\.[^/.]+$/,""),path:`${t}/${n}`}))}catch{return []}}).then(t=>t.flat()),d={};l.forEach(t=>{d[t.name]||(d[t.name]=t);}),N(),await map(Object.values(d),async t=>{let o=await readFile(t.path),n=String(o).startsWith("#!/"),c=p(s=>String(o).includes(s),"has"),a=c("export default")&&c("createCommand")||c("export default {")||c("@YCMD-command");if(d[t.name].isExecutable=n,d[t.name].isSafeImport=a,a)try{let s=await import(t.path);d[t.name].fileContent=await(s.default||s),d[t.name].isImported=!0;}catch(s){d[t.name].importErr=s;}}),S();let y=Object.values(d).map(({name:t,fileContent:o,isExecutable:n,importErr:c})=>{let a=o?.command||"",s=o?.describe||"";if(s||(c?(s+=`!!! Error: ${Err.getCode(c)}`,log.warn("importErr",c)):s+="??? Missed createCommand describe"),a||(a=t),V(o)){let{main:b,isWrapped:i}=o,{handler:h}=o;return !h&&b&&(h=p(k=>{if(!i)throw log.warn("NOT WTF isWrapped",k,t,o,n,c),new Err("!isWrapped","isWrapped");return b({argv:k})},"handler")),{...o,command:a,describe:s,handler:h}}return n?{command:a,describe:s,handler:async()=>P(`ycmd ${t} ${process.argv.slice(3).join(" ")}`)}:null});return log.trace("[commands]",y.map(t=>String(t?.command).split(" ")[0])),y.filter(Boolean)},"findCommands");
export { kt as findCommands };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=findCommands.js.map