UNPKG

@ycmd/run

Version:

LSK.js CLI Creds is the easiest way to manage GitHub / Gitlab secrets and credentials

13 lines (11 loc) 5.8 kB
import { Err } from '@lsk4/err'; import { isExecutedFile, log, joinArgs, getPackageName, createLogger, findPath, getPaths, getShortPath, undefault, isWorkspaceRoot, loadConfig, resolvePaths, loadDefaultConfig, findFileUp } from '@ycmd/utils'; import { loadMainOptions, argvToArgs } from '@ycmd/helpers'; import { readdir, readFile } from 'node:fs/promises'; import { resolve, join } from 'node:path'; import { map } from 'fishbird'; import { spawn } from '@ycmd/spawn'; var D=Object.defineProperty;var s=(t,r)=>D(t,"name",{value:r,configurable:!0});var b=s(async()=>{let t=process;t.lskrunDisableAutorun=!0;},"disableAutorun"),A=s(async()=>{let t=process;delete t.lskrunDisableAutorun;},"enableAutorun");var E=s(t=>{process;return async(o={})=>{let a={...await loadMainOptions(),...o};try{return await t(a)}catch(c){throw c}}},"wrapMain");var yt=s(t=>{let r,o=process,n=!o.lskrun&&!o.lskrunDisableAutorun,a=!1;if(typeof t=="function")r=t;else if(typeof t=="object"&&typeof t.main=="function")r=t.main,a=t.meta?isExecutedFile(t.meta):n;else throw new Err("!main","Can't find main function");if(a){n||log.warn("[exec]","Already executed",o.lskrun);let p={isAutorun:a,params:t};o.lskrun=p;}let c=E(r),g={...t,isAutorun:a,isWrapped:!0,main:c};if(a){let p={isAutorun:a,isFirstExec:n};g.res=c(p);}return g},"createCommand");async function j(t,r={}){let o=process,[n,...a]=t.trim().split(" ").filter(Boolean),{argv:c={}}=r,g=[...a,...r.args||[],...argvToArgs(c)],p=r.cwd||o.cwd(),h=r.ctx||o.pathexec?.rootRun?.ctx||{};h.stack||(h.stack=[]);let k=`${r.cmdName||"ycmd"} ${t} ${joinArgs(g)}`;h.stack.unshift({command:k,options:r});let e=r.name||getPackageName({cwd:p}),f=n.replace(/:/g,"-"),l=r.log||createLogger({name:e}),u={name:f,exts:[".sh",".js",".cjs",".mjs",".ts",".cts",".mts"],nodemodules:1,local:1,script:f},i=findPath(u);if(l.debug(`\u276F ${k}`),h.stack[0].filename=i,!i){let d=`Missing script: "${n}"`;throw new Err("YCMD_MISSING_SCRIPT",d,{data:{pathOptions:u,paths:getPaths(u)}})}let m,N=[".sh",".ts",".cts",".mts"];try{if(N.some(P=>i.endsWith(P)))return l.trace(`\u276F\u276F exec ${getShortPath(i)}`),m=await M(`${i} ${g.join(" ")}`),m;l.trace(`\u276F\u276F require ${getShortPath(i)}`);let d=undefault(await import(i)),C;if(typeof d=="function")C=d;else if(d?.run&&typeof d.run=="function")C=d.run;else if(d?.main&&typeof d.main=="function")C=d.main;else return l.warn(`[!incorrectExports] ${i}`),l.trace(`[!incorrectExports] ${i}`,{content:d}),null;C&&(m=await C({cwd:p,isRoot:isWorkspaceRoot({cwd:p}),args:g,argv:c,options:r,ctx:h,log:l})),h.stack.shift();}catch(d){throw d}return m}s(j,"pathexec");async function M(t,r={}){let n=["lsk run","lsk","lsk4","ycmd"].find(e=>t.startsWith(`${e} `));if(n)return j(t.slice(`${n} `.length),{...r,cmdName:n});let{args:a=[],argv:c,...g}=r,{silence:p}=r,h="inherit";p==="all"?h=["inherit","ignore","ignore"]:p&&(h=["inherit","ignore","inherit"]);let w=[...a,...argvToArgs(c)];return await spawn(t,w,{shell:!0,stdio:h,...g})}s(M,"shell");var nt=s(t=>t?.command||t?.handler||t?.main,"isCommand"),Bt=s(async t=>{let{exts:r}=t,o=t.cwd||process.cwd(),n=await loadConfig({cwd:o,default:!0}),a=n?.config?.scripts,c=n?.path,g=c?resolve(c,".."):o,p=[];a?p=await resolvePaths(a,{cwd:g}):(log.warn("!config.scripts, use getPaths()"),p=(await loadDefaultConfig({cwd:o})).scripts),log.trace("[configPath]",c),log.trace("[configDirPath]",g),log.trace("[loadedConfig]",n),log.trace("[scripts]",a),log.trace("[dirs]",p),log.trace("[short scripts]",p.map(e=>getShortPath(e)));let h=await map(p,async e=>{try{return (await readdir(e)).filter(l=>(r||[]).some(u=>l.endsWith(u))).map(l=>({name:l.replace(/\.[^/.]+$/,""),path:`${e}/${l}`}))}catch{return []}}).then(e=>e.flat()),w={};h.forEach(e=>{w[e.name]||(w[e.name]=e);}),b(),await map(Object.values(w),async e=>{let f=await readFile(e.path),l=String(f).startsWith("#!/"),u=s(m=>String(f).includes(m),"has"),i=u("export default")&&u("createCommand")||u("export default {")||u("@YCMD-command");if(w[e.name].isExecutable=l,w[e.name].isSafeImport=i,i)try{let m=await import(e.path);w[e.name].fileContent=await(m.default||m),w[e.name].isImported=!0;}catch(m){w[e.name].importErr=m;}}),A();let k=Object.values(w).map(({name:e,fileContent:f,isExecutable:l,importErr:u})=>{let i=f?.command||"",m=f?.describe||"";if(m||(u?(m+=`!!! Error: ${Err.getCode(u)}`,log.warn("importErr",u)):m+="??? Missed createCommand describe"),i||(i=e),nt(f)){let{main:N,isWrapped:d}=f,{handler:C}=f;return !C&&N&&(C=s(P=>{if(!d)throw log.warn("NOT WTF isWrapped",P,e,f,l,u),new Err("!isWrapped","isWrapped");return N({argv:P})},"handler")),{...f,command:i,describe:m,handler:C}}return l?{command:i,describe:m,handler:async()=>M(`ycmd ${e} ${process.argv.slice(3).join(" ")}`)}:null});return log.trace("[commands]",k.map(e=>String(e?.command).split(" ")[0])),k.filter(Boolean)},"findCommands");function R(t,r={}){let o=t,n=r.npmClient||"pnpm";if(n==="pnpm"){let a=process.env.PNPM_CONCURRENCY||4,c=a&&a!==4?` --workspace-concurrency=${a}`:"";return r.parallel&&(c+=" --parallel"),M(`pnpm -r${c} ${o}`,r)}throw new Err("LSK_NPM_CLIENT",`Unknown npmClient: ${n}`,{command:t,options:r,cmd:o})}s(R,"pnpmRecursive");async function tr(t={cwd:process.cwd()}){let r=["lerna.json","pnpm-workspace.yaml"],{cwd:o=process.cwd()}=t,n=await findFileUp(r,{cwd:o});return n?join(n,".."):null}s(tr,"findMonorepoRoot");function ar(t,r={}){let o=t,n=r.npmClient||"pnpm";if(n==="pnpm")return R(`exec ${o}`,r);throw new Err("LSK_NPM_CLIENT",`Unknown npmClient: ${n}`,{command:t,options:r,cmd:o})}s(ar,"shellParallel"); export { yt as createCommand, b as disableAutorun, A as enableAutorun, Bt as findCommands, tr as findMonorepoRoot, j as pathexec, R as pnpmRecursive, M as shell, ar as shellParallel }; //# sourceMappingURL=out.js.map //# sourceMappingURL=index.js.map