UNPKG

@ycmd/run

Version:

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

15 lines (12 loc) 4.33 kB
'use strict'; var promises = require('fs/promises'); var path = require('path'); var err = require('@lsk4/err'); var utils = require('@ycmd/utils'); var fishbird = require('fishbird'); var helpers = require('@ycmd/helpers'); var spawn = require('@ycmd/spawn'); var D=Object.defineProperty;var p=(r,e)=>D(r,"name",{value:e,configurable:!0});var C=p(async()=>{let r=process;r.lskrunDisableAutorun=!0;},"disableAutorun"),N=p(async()=>{let r=process;delete r.lskrunDisableAutorun;},"enableAutorun");async function W(r,e={}){let x=process,[f,...$]=r.trim().split(" ").filter(Boolean),{argv:g={}}=e,w=[...$,...e.args||[],...helpers.argvToArgs(g)],m=e.cwd||x.cwd(),l=e.ctx||x.pathexec?.rootRun?.ctx||{};l.stack||(l.stack=[]);let y=`${e.cmdName||"ycmd"} ${r} ${utils.joinArgs(w)}`;l.stack.unshift({command:y,options:e});let t=e.name||utils.getPackageName({cwd:m}),o=f.replace(/:/g,"-"),n=e.log||utils.createLogger({name:t}),c={name:o,exts:[".sh",".js",".cjs",".mjs",".ts",".cts",".mts"],nodemodules:1,local:1,script:o},a=utils.findPath(c);if(n.debug(`\u276F ${y}`),l.stack[0].filename=a,!a){let i=`Missing script: "${f}"`;throw new err.Err("YCMD_MISSING_SCRIPT",i,{data:{pathOptions:c,paths:utils.getPaths(c)}})}let s,b=[".sh",".ts",".cts",".mts"];try{if(b.some(k=>a.endsWith(k)))return n.trace(`\u276F\u276F exec ${utils.getShortPath(a)}`),s=await P(`${a} ${w.join(" ")}`),s;n.trace(`\u276F\u276F require ${utils.getShortPath(a)}`);let i=utils.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:utils.isWorkspaceRoot({cwd:m}),args:w,argv:g,options:e,ctx:l,log:n})),l.stack.shift();}catch(i){throw i}return s}p(W,"pathexec");async function P(r,e={}){let f=["lsk run","lsk","lsk4","ycmd"].find(t=>r.startsWith(`${t} `));if(f)return W(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=[...$,...helpers.argvToArgs(g)];return await spawn.spawn(r,d,{shell:!0,stdio:l,...w})}p(P,"shell");var U=p(r=>r?.command||r?.handler||r?.main,"isCommand"),bt=p(async r=>{let{exts:e}=r,x=r.cwd||process.cwd(),f=await utils.loadConfig({cwd:x,default:!0}),$=f?.config?.scripts,g=f?.path,w=g?path.resolve(g,".."):x,m=[];$?m=await utils.resolvePaths($,{cwd:w}):(utils.log.warn("!config.scripts, use getPaths()"),m=(await utils.loadDefaultConfig({cwd:x})).scripts),utils.log.trace("[configPath]",g),utils.log.trace("[configDirPath]",w),utils.log.trace("[loadedConfig]",f),utils.log.trace("[scripts]",$),utils.log.trace("[dirs]",m),utils.log.trace("[short scripts]",m.map(t=>utils.getShortPath(t)));let l=await fishbird.map(m,async t=>{try{return (await promises.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);}),C(),await fishbird.map(Object.values(d),async t=>{let o=await promises.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;}}),N();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.Err.getCode(c)}`,utils.log.warn("importErr",c)):s+="??? Missed createCommand describe"),a||(a=t),U(o)){let{main:b,isWrapped:i}=o,{handler:h}=o;return !h&&b&&(h=p(k=>{if(!i)throw utils.log.warn("NOT WTF isWrapped",k,t,o,n,c),new err.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 utils.log.trace("[commands]",y.map(t=>String(t?.command).split(" ")[0])),y.filter(Boolean)},"findCommands"); exports.findCommands = bt; //# sourceMappingURL=out.js.map //# sourceMappingURL=findCommands.js.map