ccommand 1.0.76 → 1.0.77
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 +20 -21
- package/dist/index.js +20 -21
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var vt=Object.create;var at=Object.defineProperty;var Mt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var J=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Nt=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Pt(e))!At.call(t,n)&&n!==r&&at(t,n,{get:()=>e[n],enumerable:!(s=Mt(e,n))||s.enumerable});return t};var I=(t,e,r)=>(r=t!=null?vt(Ft(t)):{},Nt(e||!t||!t.__esModule?at(r,"default",{value:t,enumerable:!0}):r,t));var X=J((te,ut)=>{"use strict";ut.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",s=e.indexOf(r+t),n=e.indexOf("--");return s!==-1&&(n===-1||s<n)}});var mt=J((ee,ft)=>{"use strict";var Ht=require("os"),pt=require("tty"),b=X(),{env:x}=process,C;b("no-color")||b("no-colors")||b("color=false")||b("color=never")?C=0:(b("color")||b("colors")||b("color=true")||b("color=always"))&&(C=1);"FORCE_COLOR"in x&&(x.FORCE_COLOR==="true"?C=1:x.FORCE_COLOR==="false"?C=0:C=x.FORCE_COLOR.length===0?1:Math.min(parseInt(x.FORCE_COLOR,10),3));function Q(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Z(t,e){if(C===0)return 0;if(b("color=16m")||b("color=full")||b("color=truecolor"))return 3;if(b("color=256"))return 2;if(t&&!e&&C===void 0)return 0;let r=C||0;if(x.TERM==="dumb")return r;if(process.platform==="win32"){let s=Ht.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in x)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(s=>s in x)||x.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in x)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(x.TEAMCITY_VERSION)?1:0;if(x.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in x){let s=parseInt((x.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(x.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(x.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(x.TERM)||"COLORTERM"in x?1:r}function Vt(t){let e=Z(t,t&&t.isTTY);return Q(e)}ft.exports={supportsColor:Vt,stdout:Q(Z(!0,pt.isatty(1))),stderr:Q(Z(!0,pt.isatty(2)))}});var ht=J((re,gt)=>{"use strict";var Wt=mt(),v=X();function dt(t){if(/^\d{3,4}$/.test(t)){let r=/(\d{1,2})(\d{2})/.exec(t);return{major:0,minor:parseInt(r[1],10),patch:parseInt(r[2],10)}}let e=(t||"").split(".").map(r=>parseInt(r,10));return{major:e[0],minor:e[1],patch:e[2]}}function tt(t){let{env:e}=process;if("FORCE_HYPERLINK"in e)return!(e.FORCE_HYPERLINK.length>0&&parseInt(e.FORCE_HYPERLINK,10)===0);if(v("no-hyperlink")||v("no-hyperlinks")||v("hyperlink=false")||v("hyperlink=never"))return!1;if(v("hyperlink=true")||v("hyperlink=always")||"NETLIFY"in e)return!0;if(!Wt.supportsColor(t)||t&&!t.isTTY||process.platform==="win32"||"CI"in e||"TEAMCITY_VERSION"in e)return!1;if("TERM_PROGRAM"in e){let r=dt(e.TERM_PROGRAM_VERSION);switch(e.TERM_PROGRAM){case"iTerm.app":return r.major===3?r.minor>=1:r.major>3;case"WezTerm":return r.major>=20200620;case"vscode":return r.major>1||r.major===1&&r.minor>=72}}if("VTE_VERSION"in e){if(e.VTE_VERSION==="0.50.0")return!1;let r=dt(e.VTE_VERSION);return r.major>0||r.minor>=50}return!1}gt.exports={supportsHyperlink:tt,stdout:tt(process.stdout),stderr:tt(process.stderr)}});var B=I(require("fs/promises")),q=require("fs"),K=I(require("path")),f=require("lazy-js-utils/node"),bt=require("lazy-js-utils"),Tt=I(require("fast-glob")),a=I(require("@simon_he/colorize"));var p="\x1B[",N="\x1B]",S="\x07",z=";",ct=process.env.TERM_PROGRAM==="Apple_Terminal",c={};c.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?p+(t+1)+"G":p+(e+1)+";"+(t+1)+"H"};c.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=p+-t+"D":t>0&&(r+=p+t+"C"),e<0?r+=p+-e+"A":e>0&&(r+=p+e+"B"),r};c.cursorUp=(t=1)=>p+t+"A";c.cursorDown=(t=1)=>p+t+"B";c.cursorForward=(t=1)=>p+t+"C";c.cursorBackward=(t=1)=>p+t+"D";c.cursorLeft=p+"G";c.cursorSavePosition=ct?"\x1B7":p+"s";c.cursorRestorePosition=ct?"\x1B8":p+"u";c.cursorGetPosition=p+"6n";c.cursorNextLine=p+"E";c.cursorPrevLine=p+"F";c.cursorHide=p+"?25l";c.cursorShow=p+"?25h";c.eraseLines=t=>{let e="";for(let r=0;r<t;r++)e+=c.eraseLine+(r<t-1?c.cursorUp():"");return t&&(e+=c.cursorLeft),e};c.eraseEndLine=p+"K";c.eraseStartLine=p+"1K";c.eraseLine=p+"2K";c.eraseDown=p+"J";c.eraseUp=p+"1J";c.eraseScreen=p+"2J";c.scrollUp=p+"S";c.scrollDown=p+"T";c.clearScreen="\x1Bc";c.clearTerminal=process.platform==="win32"?`${c.eraseScreen}${p}0f`:`${c.eraseScreen}${p}3J${p}H`;c.beep=S;c.link=(t,e)=>[N,"8",z,z,e,S,t,N,"8",z,z,S].join("");c.image=(t,e={})=>{let r=`${N}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+S};c.iTerm={setCwd:(t=process.cwd())=>`${N}50;CurrentDir=${t}${S}`,annotation:(t,e={})=>{let r=`${N}1337;`,s=typeof e.x<"u",n=typeof e.y<"u";if((s||n)&&!(s&&n&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+S}};var lt=c;var G=I(ht(),1);function j(t,e,{target:r="stdout",...s}={}){return G.default[r]?lt.link(t,e):s.fallback===!1?t:typeof s.fallback=="function"?s.fallback(t,e):`${t} (\u200B${e}\u200B)`}j.isSupported=G.default.stdout;j.stderr=(t,e,r={})=>j(t,e,{target:"stderr",...r});j.stderr.isSupported=G.default.stderr;var et="1.0.77";var H=I(require("@simon_he/colorize")),Y=require("lazy-js-utils/node");var rt=console.log;async function $t(t){let{status:e}=await(0,Y.jsShell)("gum -v","pipe");if(e!==0){rt((0,H.default)({color:"blue",text:t?"\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5gum...":"install gum..."}));let{status:r}=await(0,Y.jsShell)("brew install gum");if(r!==0){let{status:s}=await(0,Y.jsShell)(`sudo mkdir -p /etc/apt/keyrings
|
|
2
2
|
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
|
|
3
3
|
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
|
|
4
|
-
sudo apt update && sudo apt install gum`);if(
|
|
4
|
+
sudo apt update && sudo apt install gum`);if(s!==0){let n=j(t?"gum\u5B98\u7F51\u94FE\u63A5":"the official website of gum","https://github.com/charmbracelet/gum#installation");return rt((0,H.default)({color:"red",text:`${t?"gum\u5B89\u88C5\u5931\u8D25,\u4F60\u53EF\u4EE5\u81EA\u884C\u4ECE\u4EE5\u4E0B\u94FE\u63A5\u5B89\u88C5":"gum install error, you can install it yourself through"} ${(0,H.default)({color:"yellow",text:n,bold:!0})}`}))}}rt((0,H.default)({color:"green",text:t?"gum\u5B89\u88C5\u6210\u529F \u{1F389}":"gum install successfully \u{1F389}"}))}}var yt=I(require("fs/promises"));function wt(t){return new Promise(e=>{yt.default.readFile(t,"utf-8").then(r=>{let s=[];for(let n of r.matchAll(/.PHONY:\s*([\w0-9\-]+)/g)){let l;if(!n||!(l=n[1]))continue;let $=new RegExp(`^${l}:[
|
|
5
5
|
\\s]*([^
|
|
6
|
-
\\\\;]+)`,"sm"),
|
|
6
|
+
\\\\;]+)`,"sm"),T=r.match($);if(!T)continue;let k=`${T[1].trim()}...`;s.push({name:l,detail:k})}e(s)}).catch(e)})}var zt=require("yamljs"),M=[],O=null,u=console.log,xt="__ccommand__split",g=process.env.PI_Lang==="zh",D=130,Gt=g?"\u5DF2\u53D6\u6D88...":"Cancelled...",Rt=g?"\u5F53\u524D\u76EE\u5F55\u5E76\u672A\u627E\u5230package.json\u6587\u4EF6":"The current directory and not found package.json file",kt=g?"\u6B63\u5728\u4E3A\u60A8\u6267\u884C...":"is running for you...";async function Yt(t,e,r,s){await P(`prun ${t}`);let{status:n}=await(0,f.jsShell)(e,{errorExit:!1,isLog:!1,stdio:"inherit"});u((0,a.default)({color:n===0?"green":"red",text:`
|
|
7
|
+
"prun ${t}" ${n===0?r:s} ${n===0?"\u{1F389}":"\u274C"}`}))}async function Dt(t,e,r){t.endsWith(".py")?await Yt(t,`python ${t}`,e,r):t.endsWith(".rs")&&((await(0,f.jsShell)(`rustc ${t}`)).status===0?(await P(`prun ${t}`),await(0,f.jsShell)(`./${t.slice(0,t.length-3)}`,"inherit"),u((0,a.default)({color:"green",text:`
|
|
8
|
+
"prun ${t}" ${e} \u{1F389}`}))):u((0,a.default)({color:"red",text:`
|
|
9
|
+
command "prun ${t}" ${r} \u274C`})))}async function jt(t){await $t(g);let e=g?"\u5F53\u524D\u76EE\u5F55\u4E0D\u5B58\u5728\u4EFB\u4F55\u5B50\u76EE\u5F55":"The current directory does not have any subdirectories",r=g?"\u8FD0\u884C\u6210\u529F":"run successfully",s=g?"\u8FD0\u884C\u5931\u8D25":"run error",n=t?t.replace(/\s+/," ").split(" "):process.argv.slice(2);if(n[0]==="-v"||n[0]==="--version")return u((0,a.default)({text:g?`ccommand \u5F53\u524D\u7248\u672C: ${et}`:`ccommand Version: ${et}`,color:"green"}));if(n[0]==="-h"||n[0]==="--help"){let o=j(g?"\u6253\u5F00\u4E00\u4E2A\u65B0\u7684\u95EE\u9898":"open an issue","https://github.com/Simon-He95/ccommand/issues"),i=j(g?"\u2728\u5E2E\u52A9\u70B9\u4E00\u4E2A\u661F\u661F":"\u2728star it","https://github.com/Simon-He95/ccommand");return u((0,a.default)({color:"white",text:`
|
|
7
10
|
${(0,a.default)({bold:!0,text:"Common Commands:",bgColor:"blue"})}
|
|
8
11
|
${(0,a.default)({text:`- ccommand -v \u67E5\u770B\u5F53\u524D\u7248\u672C
|
|
9
12
|
- ccommand -help \u67E5\u770B\u5E2E\u52A9
|
|
10
13
|
- ccommand \u6267\u884C\u5F53\u524Dpackage.json
|
|
11
14
|
- ccommand find \u67E5\u627E\u5F53\u524Dworkspace\u7684\u6240\u6709\u76EE\u5F55
|
|
12
15
|
`,color:"cyan"})}
|
|
13
|
-
If you encounter any problems, you can ${(0,a.default)({color:"magenta",text:
|
|
14
|
-
If you like it, please ${(0,a.default)({text:i,bold:!0,color:"cyan"})} `}))}else if(
|
|
15
|
-
"
|
|
16
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${n}"`})} ${o} \u274C`}));return}else if(s[0]?.endsWith(".py")){let n=s[0];await M(`prun ${n}`);let{status:i}=await(0,f.jsShell)(`python ${n}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(i===0?(0,a.default)({color:"green",text:`
|
|
17
|
-
"prun ${n}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
18
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${n}"`})} ${o} \u274C`}));return}let l;try{l=await(0,f.getPkgTool)()}catch{try{if(await A.default.readFile(K.default.resolve(process.cwd(),"./Makefile"),"utf-8")){l="make";let d=await we("./Makefile"),m=d.reduce((h,w)=>{let{name:C,detail:N}=w;return h[C]=N,h},{}),y="";if(e)y=be(m,e);else{let{result:h,status:w}=await(0,f.jsShell)(`echo "${d.map(C=>C.name).join(`
|
|
19
|
-
`)}" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,"pipe");if(w===D)return z();y=h}await U(y.trim(),"");return}else return u((0,a.default)({color:"red",text:ke}))}catch{if(s[0]!=="find")return u((0,a.default)({color:"red",text:ke}))}}let[k,b,$]=Ye(s),R=k,_;if(s[0]==="find"){if(b)await B(l),R=P.filter(n=>n.includes(b))[0];else if(l==="yarn"){if(await B(l),!P.length)return u((0,a.default)({color:"yellow",text:t}));let{result:n,status:i}=await(0,f.jsShell)(`echo ${P.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(R=n,i===D)return z()}else if(l==="pnpm"){if(await B(l),!P.length)return u((0,a.default)({color:"yellow",text:t}));let{result:n,status:i}=await(0,f.jsShell)(`echo ${P.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,{stdio:"pipe",isLog:!0});if(i===D)return z();R=n.trim()}else return u((0,a.default)({color:"red",text:g?"find\u6307\u4EE4\u53EA\u80FD\u652F\u6301\u5728yarn\u6216pnpm\u7684monorepo\u6A21\u5F0F\u4E0B\u4F7F\u7528":"find command only support yarn or pnpm"}));_=await oe()}else if(_=await oe(),k&&O&&!O[k]||!O)try{let n=(await(0,f.getPkg)("./package.json")||{})?.scripts;if(n&&n[s[0]]){await U(s[0],s.slice(1).join(" "));return}else if(n&&k){let i=be(n,s[0]);if(i){let d=s.slice(1).join(" ");await U(i,d);return}else{let d=`${k}.py`;if((0,q.existsSync)(d)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Python\u6587\u4EF6":"Found Python file"}: ${d}`,color:"yellow"})),await M(`prun ${d}`);let{status:y}=await(0,f.jsShell)(`python ${d}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(y===0?(0,a.default)({color:"green",text:`
|
|
16
|
+
If you encounter any problems, you can ${(0,a.default)({color:"magenta",text:o})}.
|
|
17
|
+
If you like it, please ${(0,a.default)({text:i,bold:!0,color:"cyan"})} `}))}else if(n[0]?.endsWith(".py")||n[0]?.endsWith(".rs")){await Dt(n[0],r,s);return}let l;try{l=await(0,f.getPkgTool)()}catch{try{if(await B.default.readFile(K.default.resolve(process.cwd(),"./Makefile"),"utf-8")){l="make";let d=await wt("./Makefile"),m=d.reduce((h,w)=>{let{name:L,detail:A}=w;return h[L]=A,h},{}),y="";if(t)y=Et(m,t);else{let{result:h,status:w}=await(0,f.jsShell)(`echo "${d.map(L=>L.name).join(`
|
|
18
|
+
`)}" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,"pipe");if(w===D)return W();y=h}await U(y.trim(),"");return}else return u((0,a.default)({color:"red",text:Rt}))}catch{if(n[0]!=="find")return u((0,a.default)({color:"red",text:Rt}))}}let[$,T,k]=Xt(n),R=$,_;if(n[0]==="find"){if(T)await V(l),R=M.filter(o=>o.includes(T))[0];else if(l==="yarn"){if(await V(l),!M.length)return u((0,a.default)({color:"yellow",text:e}));let{result:o,status:i}=await(0,f.jsShell)(`echo ${M.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(R=o,i===D)return W()}else if(l==="pnpm"){if(await V(l),!M.length)return u((0,a.default)({color:"yellow",text:e}));let{result:o,status:i}=await(0,f.jsShell)(`echo ${M.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(i===D)return W();R=o.trim()}else return u((0,a.default)({color:"red",text:g?"find\u6307\u4EE4\u53EA\u80FD\u652F\u6301\u5728yarn\u6216pnpm\u7684monorepo\u6A21\u5F0F\u4E0B\u4F7F\u7528":"find command only support yarn or pnpm"}));_=await it()}else if(_=await it(),$&&O&&!O[$]||!O)try{let o=(await(0,f.getPkg)("./package.json")||{})?.scripts;if(o&&o[n[0]]){await U(n[0],n.slice(1).join(" "));return}else if(o&&$){let i=Et(o,n[0]);if(i){let d=n.slice(1).join(" ");await U(i,d);return}else{let d=`${$}.py`;if((0,q.existsSync)(d)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Python\u6587\u4EF6":"Found Python file"}: ${d}`,color:"yellow"})),await P(`prun ${d}`);let{status:y}=await(0,f.jsShell)(`python ${d}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(y===0?(0,a.default)({color:"green",text:`
|
|
20
19
|
"prun ${d}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
21
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${d}"`})} ${
|
|
20
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${d}"`})} ${s} \u274C`}));return}let m=`${$}.rs`;if((0,q.existsSync)(m)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Rust\u6587\u4EF6":"Found Rust file"}: ${m}`,color:"yellow"})),await P(`prun ${m}`);let{status:y}=await(0,f.jsShell)(`rustc ${m}`,{errorExit:!1,isLog:!1,stdio:"inherit"});if(y===0){let{status:h}=await(0,f.jsShell)(`./${n[0]}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(h===0?(0,a.default)({color:"green",text:`
|
|
22
21
|
"prun ${m}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
23
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${
|
|
24
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${
|
|
25
|
-
${
|
|
26
|
-
${
|
|
27
|
-
command '${E}' ${
|
|
28
|
-
prun '${
|
|
29
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`'${n
|
|
30
|
-
|
|
31
|
-
`).forEach(
|
|
32
|
-
`);await
|
|
22
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${s} \u274C`}))}else u((0,a.default)({color:"red",text:`
|
|
23
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${s} \u274C`}));return}u((0,a.default)({color:"red",text:`"${n[0]}" ${g?"\u5728\u5DE5\u4F5C\u533A\u3001\u5F53\u524D\u76EE\u5F55\u4E2D\u627E\u4E0D\u5230\u4EFB\u4F55\u53EF\u6267\u884C\u7684\u811A\u672C,\u8BF7\u68C0\u67E5":"is not found in workspace, current directory or current scripts, please check"}`})),process.exit(1)}}}catch{}if(!_)return u((0,a.default)({color:"red",text:g?"\u627E\u4E0D\u5230\u4EFB\u4F55\u53EF\u6267\u884C\u811A\u672C":"No scripts found"}));let F=[],E="";if(!T||n[0]==="find"&&(!n[2]||n[2].startsWith("--"))){let o=Object.keys(_).reduce((m,y)=>{let h=_[y];return F.push(y),m+=`"${y}: ${h.replace(/\\/g,"\\\\").replace(/(["`])/g,"\\$1")}"${xt}`,m},""),{result:i,status:d}=await(0,f.jsShell)(`echo ${o} | sed "s/${xt}/\\n/g" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,{stdio:["inherit","pipe","inherit"],isLog:!1});if(d===D)return W();E=i.substring(0,i.indexOf(": "))}if(!T&&!E)return W();u((0,a.default)({text:`\u{1F914} ${kt} ${E}`,color:"magenta"}));let[Ot,nt]=await It(),_t=Ot.replace(/\s+/g," "),{status:Ct,result:Lt=""}=await(0,f.jsShell)(_t,{errorExit:!1,stdio:"inherit"});if(Ct===0)return u((0,a.default)({color:"green",text:`
|
|
24
|
+
${nt} \u{1F389}`}));if(Lt.includes("pnpm versions with respective Node.js version support")){u((0,a.default)({text:g?"\u6B63\u5728\u5C1D\u8BD5\u4F7F\u7528 npm \u518D\u6B21\u6267\u884C...":"Trying to use npm to run again...",color:"yellow"}));let{status:o}=await(0,f.jsShell)(`npm run ${E}${k?` -- ${k}`:""}`,"inherit");if(o===0)return u((0,a.default)({color:"green",text:`
|
|
25
|
+
${nt} \u{1F389}`}))}u((0,a.default)({color:"red",text:`
|
|
26
|
+
command '${E}' ${s} \u274C`}));function st(o){return F.find(i=>i===o)??F.find(i=>o.startsWith(i))}async function It(){let o="",i="",d=l!=="yarn";l==="npm"?(i=k?` -- ${k}`:"",o=R?` --prefix ${R} `:" "):l==="pnpm"?(i=k?` ${k}`:"",o=R?` --filter ${R} `:" "):l==="yarn"?(i=k?` ${k}`:"",o=R?` workspace ${R} `:" "):l==="bun"&&(i=k?` ${k}`:"",o="");let m="",y="";if(i&&!i.startsWith(" --")){let ot=i.split(" ").filter(Boolean);m=ot[0],i=ot.slice(1).join(" ")}let h=`${l}${d?" run":" "}${o} ${m||(E?st(E)||E:T)} ${St(i)?`-- ${i}`:i}`;E=`${m||(E?st(E):T)}`,n[0]==="find"?y=`pfind ${R} ${E} ${i}`.replace(/\s+/g," ").trim():y=`prun ${E} ${i}`.replace(/\s+/g," ").trim(),await P(y);let w=y.split(" "),L=w.slice(-1)[0];w[w.length-1]=`'${L}'`;let A=w.join(" ");return[h,A]}async function it(){try{if(!R||l==="bun"||l==="npm")return(await(0,f.getPkg)("./package.json"))?.scripts;if(l==="pnpm")return(await V(l))[R]||(await(0,f.getPkg)(`${R}/package.json`))?.scripts;if(l==="yarn")return(await V(l))[R]||(await(0,f.getPkg)(`${R}/package.json`))?.scripts}catch{}}function St(o){return n[0]==="find",n[1]&&o}async function U(o,i){let d,m="",y=n[0]?.trim();switch(o&&y&&y!==o?u((0,a.default)({text:`\u{1F914} ${(0,a.default)({text:`'${n[0]}'`,color:"cyan"})} ${g?"\u81EA\u52A8\u7684\u4E3A\u60A8\u5339\u914D\u6210":"automatically match for you to"} ${(0,a.default)({text:`'${o}${i?` ${i}`:""}'`,color:"cyan"})} `,color:"yellow"})):o&&u((0,a.default)({text:`\u{1F914} ${kt} ${o}`,color:"magenta"})),l){case"npm":{let{status:h,result:w}=await(0,f.jsShell)(`npm run ${o}${i?` -- ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"pnpm":{let{status:h,result:w=""}=await(0,f.jsShell)(`pnpm run ${o}${i?` ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});if(m=w,d=h,m.includes("pnpm versions with respective Node.js version support")){u((0,a.default)({text:g?"\u6B63\u5728\u5C1D\u8BD5\u4F7F\u7528 npm \u518D\u6B21\u6267\u884C...":"Trying to use npm to run again...",color:"yellow"}));let{status:L,result:A}=await(0,f.jsShell)(`npm run ${o}${i?` -- ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=L,m=A}break}case"yarn":{let{status:h,result:w}=await(0,f.jsShell)(`yarn ${o}${i?` ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"bun":{let{status:h,result:w}=await(0,f.jsShell)(`bun run ${o} ${i}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"make":{let{status:h,result:w}=await(0,f.jsShell)(`make ${o} ${i}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}}return d===0?(await P(`prun ${o}${i?` ${i}`:""}`),u((0,a.default)({color:"green",text:`
|
|
27
|
+
prun '${o}${i?` ${i}`:""}' ${r} \u{1F389}`}))):u((0,a.default)({color:"red",text:`
|
|
28
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`'${o||n[0]}${i?` ${i}`:""}'`})} ${s} \u274C`}))}}async function qt(t){let e=t==="pnpm"?K.default.resolve(process.cwd(),"pnpm-workspace.yaml"):K.default.resolve(process.cwd(),"package.json");try{return await B.default.readFile(e,"utf-8")}catch{return""}}function Kt(t,e){if(t==="pnpm")return zt.parse(e)?.packages||[];{let r=JSON.parse(e)?.workspaces;return(0,bt.isPlainObject)(r)?r?.packages||[]:r||[]}}async function Ut(t){if(O)return O;let e=await qt(t),r=Kt(t,e);return O=await Jt(r)||{},M=Object.keys(O).filter(s=>O[s]&&Object.keys(O[s]).length),O}async function Jt(t){if(!t.length)return{};let e=await(0,Tt.default)(t.map(s=>`${s}/package.json`),{dot:!0,ignore:["**/node_modules/**"]});return(await Promise.all(e.map(async s=>{let n=await(0,f.getPkg)(s);if(!n)return null;let{name:l,scripts:$}=n;return{name:l,scripts:$}}))).reduce((s,n)=>(!n||!n.name||!n.scripts||(s[n.name]=Object.keys(n.scripts).reduce((l,$)=>($.startsWith("//")||(l[$]=n.scripts[$]),l),{})),s),{})}async function V(t){return Ut(t)}function Xt(t){let e=t[0];return e?e.startsWith("--")?["","",t.join(" ")]:t[1]&&t[1].startsWith("--")?[e,"",t.slice(1).join(" ")]:[e,t[1],t.slice(2).join(" ")]:["","",""]}function Et(t,e){let r=Object.keys(t),s=r.find(n=>n.startsWith(e));if(s)return s;try{let n=new RegExp(e.split("").join("[_-\\w$.:]*"));return r.find(l=>n.test(l))}catch(n){u((0,a.default)({text:`${g?"\u6B63\u5219\u9519\u8BEF":"RegExp error"}: ${n}`,color:"red"})),process.exit(1)}}function W(){return u((0,a.default)({color:"yellow",text:Gt})),process.exit()}async function P(t){u((0,a.default)({text:`${g?"\u5FEB\u6377\u6307\u4EE4":"shortcut command"}: ${t}`,color:"blue",bold:!0}));let e=`${process.env.HOME}/.zsh_history`;try{if(!(0,q.existsSync)(e))return;let r=await B.default.readFile(e,"utf8"),n=new Date().getTime()/1e3,l=`${r}: ${n.toFixed(0)}:0;${t}
|
|
29
|
+
`,$=[];l.split(`
|
|
30
|
+
`).forEach(k=>{let R=k.split(";").slice(1).join(";"),_=$.findIndex(F=>F.split(";").slice(1).join(";")===R);_!==-1&&$.splice(_,1),$.push(k)});let T=$.join(`
|
|
31
|
+
`);await B.default.writeFile(e,T)}catch{}}jt();
|
package/dist/index.js
CHANGED
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Mt=Object.create;var z=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var At=Object.getPrototypeOf,Nt=Object.prototype.hasOwnProperty;var X=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ht=(t,e)=>{for(var r in e)z(t,r,{get:e[r],enumerable:!0})},ct=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ft(e))!Nt.call(t,n)&&n!==r&&z(t,n,{get:()=>e[n],enumerable:!(s=Pt(e,n))||s.enumerable});return t};var I=(t,e,r)=>(r=t!=null?Mt(At(t)):{},ct(e||!t||!t.__esModule?z(r,"default",{value:t,enumerable:!0}):r,t)),Vt=t=>ct(z({},"__esModule",{value:!0}),t);var Q=X((ne,pt)=>{"use strict";pt.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",s=e.indexOf(r+t),n=e.indexOf("--");return s!==-1&&(n===-1||s<n)}});var dt=X((se,mt)=>{"use strict";var Wt=require("os"),ft=require("tty"),b=Q(),{env:x}=process,C;b("no-color")||b("no-colors")||b("color=false")||b("color=never")?C=0:(b("color")||b("colors")||b("color=true")||b("color=always"))&&(C=1);"FORCE_COLOR"in x&&(x.FORCE_COLOR==="true"?C=1:x.FORCE_COLOR==="false"?C=0:C=x.FORCE_COLOR.length===0?1:Math.min(parseInt(x.FORCE_COLOR,10),3));function Z(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function tt(t,e){if(C===0)return 0;if(b("color=16m")||b("color=full")||b("color=truecolor"))return 3;if(b("color=256"))return 2;if(t&&!e&&C===void 0)return 0;let r=C||0;if(x.TERM==="dumb")return r;if(process.platform==="win32"){let s=Wt.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in x)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(s=>s in x)||x.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in x)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(x.TEAMCITY_VERSION)?1:0;if(x.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in x){let s=parseInt((x.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(x.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(x.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(x.TERM)||"COLORTERM"in x?1:r}function Bt(t){let e=tt(t,t&&t.isTTY);return Z(e)}mt.exports={supportsColor:Bt,stdout:Z(tt(!0,ft.isatty(1))),stderr:Z(tt(!0,ft.isatty(2)))}});var $t=X((ie,ht)=>{"use strict";var zt=dt(),v=Q();function gt(t){if(/^\d{3,4}$/.test(t)){let r=/(\d{1,2})(\d{2})/.exec(t);return{major:0,minor:parseInt(r[1],10),patch:parseInt(r[2],10)}}let e=(t||"").split(".").map(r=>parseInt(r,10));return{major:e[0],minor:e[1],patch:e[2]}}function et(t){let{env:e}=process;if("FORCE_HYPERLINK"in e)return!(e.FORCE_HYPERLINK.length>0&&parseInt(e.FORCE_HYPERLINK,10)===0);if(v("no-hyperlink")||v("no-hyperlinks")||v("hyperlink=false")||v("hyperlink=never"))return!1;if(v("hyperlink=true")||v("hyperlink=always")||"NETLIFY"in e)return!0;if(!zt.supportsColor(t)||t&&!t.isTTY||process.platform==="win32"||"CI"in e||"TEAMCITY_VERSION"in e)return!1;if("TERM_PROGRAM"in e){let r=gt(e.TERM_PROGRAM_VERSION);switch(e.TERM_PROGRAM){case"iTerm.app":return r.major===3?r.minor>=1:r.major>3;case"WezTerm":return r.major>=20200620;case"vscode":return r.major>1||r.major===1&&r.minor>=72}}if("VTE_VERSION"in e){if(e.VTE_VERSION==="0.50.0")return!1;let r=gt(e.VTE_VERSION);return r.major>0||r.minor>=50}return!1}ht.exports={supportsHyperlink:et,stdout:et(process.stdout),stderr:et(process.stderr)}});var te={};Ht(te,{ccommand:()=>Ot});module.exports=Vt(te);var B=I(require("fs/promises")),K=require("fs"),U=I(require("path")),f=require("lazy-js-utils/node"),Tt=require("lazy-js-utils"),jt=I(require("fast-glob")),a=I(require("@simon_he/colorize"));var p="\x1B[",N="\x1B]",S="\x07",G=";",lt=process.env.TERM_PROGRAM==="Apple_Terminal",c={};c.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?p+(t+1)+"G":p+(e+1)+";"+(t+1)+"H"};c.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=p+-t+"D":t>0&&(r+=p+t+"C"),e<0?r+=p+-e+"A":e>0&&(r+=p+e+"B"),r};c.cursorUp=(t=1)=>p+t+"A";c.cursorDown=(t=1)=>p+t+"B";c.cursorForward=(t=1)=>p+t+"C";c.cursorBackward=(t=1)=>p+t+"D";c.cursorLeft=p+"G";c.cursorSavePosition=lt?"\x1B7":p+"s";c.cursorRestorePosition=lt?"\x1B8":p+"u";c.cursorGetPosition=p+"6n";c.cursorNextLine=p+"E";c.cursorPrevLine=p+"F";c.cursorHide=p+"?25l";c.cursorShow=p+"?25h";c.eraseLines=t=>{let e="";for(let r=0;r<t;r++)e+=c.eraseLine+(r<t-1?c.cursorUp():"");return t&&(e+=c.cursorLeft),e};c.eraseEndLine=p+"K";c.eraseStartLine=p+"1K";c.eraseLine=p+"2K";c.eraseDown=p+"J";c.eraseUp=p+"1J";c.eraseScreen=p+"2J";c.scrollUp=p+"S";c.scrollDown=p+"T";c.clearScreen="\x1Bc";c.clearTerminal=process.platform==="win32"?`${c.eraseScreen}${p}0f`:`${c.eraseScreen}${p}3J${p}H`;c.beep=S;c.link=(t,e)=>[N,"8",G,G,e,S,t,N,"8",G,G,S].join("");c.image=(t,e={})=>{let r=`${N}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+S};c.iTerm={setCwd:(t=process.cwd())=>`${N}50;CurrentDir=${t}${S}`,annotation:(t,e={})=>{let r=`${N}1337;`,s=typeof e.x<"u",n=typeof e.y<"u";if((s||n)&&!(s&&n&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+S}};var ut=c;var Y=I($t(),1);function j(t,e,{target:r="stdout",...s}={}){return Y.default[r]?ut.link(t,e):s.fallback===!1?t:typeof s.fallback=="function"?s.fallback(t,e):`${t} (\u200B${e}\u200B)`}j.isSupported=Y.default.stdout;j.stderr=(t,e,r={})=>j(t,e,{target:"stderr",...r});j.stderr.isSupported=Y.default.stderr;var rt="1.0.77";var H=I(require("@simon_he/colorize")),D=require("lazy-js-utils/node");var nt=console.log;async function yt(t){let{status:e}=await(0,D.jsShell)("gum -v","pipe");if(e!==0){nt((0,H.default)({color:"blue",text:t?"\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5gum...":"install gum..."}));let{status:r}=await(0,D.jsShell)("brew install gum");if(r!==0){let{status:s}=await(0,D.jsShell)(`sudo mkdir -p /etc/apt/keyrings
|
|
2
2
|
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
|
|
3
3
|
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
|
|
4
|
-
sudo apt update && sudo apt install gum`);if(
|
|
4
|
+
sudo apt update && sudo apt install gum`);if(s!==0){let n=j(t?"gum\u5B98\u7F51\u94FE\u63A5":"the official website of gum","https://github.com/charmbracelet/gum#installation");return nt((0,H.default)({color:"red",text:`${t?"gum\u5B89\u88C5\u5931\u8D25,\u4F60\u53EF\u4EE5\u81EA\u884C\u4ECE\u4EE5\u4E0B\u94FE\u63A5\u5B89\u88C5":"gum install error, you can install it yourself through"} ${(0,H.default)({color:"yellow",text:n,bold:!0})}`}))}}nt((0,H.default)({color:"green",text:t?"gum\u5B89\u88C5\u6210\u529F \u{1F389}":"gum install successfully \u{1F389}"}))}}var wt=I(require("fs/promises"));function xt(t){return new Promise(e=>{wt.default.readFile(t,"utf-8").then(r=>{let s=[];for(let n of r.matchAll(/.PHONY:\s*([\w0-9\-]+)/g)){let l;if(!n||!(l=n[1]))continue;let $=new RegExp(`^${l}:[
|
|
5
5
|
\\s]*([^
|
|
6
|
-
\\\\;]+)`,"sm"),
|
|
6
|
+
\\\\;]+)`,"sm"),T=r.match($);if(!T)continue;let k=`${T[1].trim()}...`;s.push({name:l,detail:k})}e(s)}).catch(e)})}var Yt=require("yamljs"),M=[],O=null,u=console.log,Rt="__ccommand__split",g=process.env.PI_Lang==="zh",q=130,Dt=g?"\u5DF2\u53D6\u6D88...":"Cancelled...",kt=g?"\u5F53\u524D\u76EE\u5F55\u5E76\u672A\u627E\u5230package.json\u6587\u4EF6":"The current directory and not found package.json file",Et=g?"\u6B63\u5728\u4E3A\u60A8\u6267\u884C...":"is running for you...";async function qt(t,e,r,s){await P(`prun ${t}`);let{status:n}=await(0,f.jsShell)(e,{errorExit:!1,isLog:!1,stdio:"inherit"});u((0,a.default)({color:n===0?"green":"red",text:`
|
|
7
|
+
"prun ${t}" ${n===0?r:s} ${n===0?"\u{1F389}":"\u274C"}`}))}async function Kt(t,e,r){t.endsWith(".py")?await qt(t,`python ${t}`,e,r):t.endsWith(".rs")&&((await(0,f.jsShell)(`rustc ${t}`)).status===0?(await P(`prun ${t}`),await(0,f.jsShell)(`./${t.slice(0,t.length-3)}`,"inherit"),u((0,a.default)({color:"green",text:`
|
|
8
|
+
"prun ${t}" ${e} \u{1F389}`}))):u((0,a.default)({color:"red",text:`
|
|
9
|
+
command "prun ${t}" ${r} \u274C`})))}async function Ot(t){await yt(g);let e=g?"\u5F53\u524D\u76EE\u5F55\u4E0D\u5B58\u5728\u4EFB\u4F55\u5B50\u76EE\u5F55":"The current directory does not have any subdirectories",r=g?"\u8FD0\u884C\u6210\u529F":"run successfully",s=g?"\u8FD0\u884C\u5931\u8D25":"run error",n=t?t.replace(/\s+/," ").split(" "):process.argv.slice(2);if(n[0]==="-v"||n[0]==="--version")return u((0,a.default)({text:g?`ccommand \u5F53\u524D\u7248\u672C: ${rt}`:`ccommand Version: ${rt}`,color:"green"}));if(n[0]==="-h"||n[0]==="--help"){let o=j(g?"\u6253\u5F00\u4E00\u4E2A\u65B0\u7684\u95EE\u9898":"open an issue","https://github.com/Simon-He95/ccommand/issues"),i=j(g?"\u2728\u5E2E\u52A9\u70B9\u4E00\u4E2A\u661F\u661F":"\u2728star it","https://github.com/Simon-He95/ccommand");return u((0,a.default)({color:"white",text:`
|
|
7
10
|
${(0,a.default)({bold:!0,text:"Common Commands:",bgColor:"blue"})}
|
|
8
11
|
${(0,a.default)({text:`- ccommand -v \u67E5\u770B\u5F53\u524D\u7248\u672C
|
|
9
12
|
- ccommand -help \u67E5\u770B\u5E2E\u52A9
|
|
10
13
|
- ccommand \u6267\u884C\u5F53\u524Dpackage.json
|
|
11
14
|
- ccommand find \u67E5\u627E\u5F53\u524Dworkspace\u7684\u6240\u6709\u76EE\u5F55
|
|
12
15
|
`,color:"cyan"})}
|
|
13
|
-
If you encounter any problems, you can ${(0,a.default)({color:"magenta",text:
|
|
14
|
-
If you like it, please ${(0,a.default)({text:i,bold:!0,color:"cyan"})} `}))}else if(
|
|
15
|
-
"
|
|
16
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${n}"`})} ${o} \u274C`}));return}else if(s[0]?.endsWith(".py")){let n=s[0];await M(`prun ${n}`);let{status:i}=await(0,f.jsShell)(`python ${n}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(i===0?(0,a.default)({color:"green",text:`
|
|
17
|
-
"prun ${n}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
18
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${n}"`})} ${o} \u274C`}));return}let l;try{l=await(0,f.getPkgTool)()}catch{try{if(await A.default.readFile(U.default.resolve(process.cwd(),"./Makefile"),"utf-8")){l="make";let d=await xe("./Makefile"),m=d.reduce((h,w)=>{let{name:C,detail:N}=w;return h[C]=N,h},{}),y="";if(e)y=Ee(m,e);else{let{result:h,status:w}=await(0,f.jsShell)(`echo "${d.map(C=>C.name).join(`
|
|
19
|
-
`)}" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,"pipe");if(w===q)return z();y=h}await J(y.trim(),"");return}else return u((0,a.default)({color:"red",text:Re}))}catch{if(s[0]!=="find")return u((0,a.default)({color:"red",text:Re}))}}let[k,b,$]=qe(s),R=k,_;if(s[0]==="find"){if(b)await B(l),R=P.filter(n=>n.includes(b))[0];else if(l==="yarn"){if(await B(l),!P.length)return u((0,a.default)({color:"yellow",text:t}));let{result:n,status:i}=await(0,f.jsShell)(`echo ${P.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(R=n,i===q)return z()}else if(l==="pnpm"){if(await B(l),!P.length)return u((0,a.default)({color:"yellow",text:t}));let{result:n,status:i}=await(0,f.jsShell)(`echo ${P.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,{stdio:"pipe",isLog:!0});if(i===q)return z();R=n.trim()}else return u((0,a.default)({color:"red",text:g?"find\u6307\u4EE4\u53EA\u80FD\u652F\u6301\u5728yarn\u6216pnpm\u7684monorepo\u6A21\u5F0F\u4E0B\u4F7F\u7528":"find command only support yarn or pnpm"}));_=await ie()}else if(_=await ie(),k&&O&&!O[k]||!O)try{let n=(await(0,f.getPkg)("./package.json")||{})?.scripts;if(n&&n[s[0]]){await J(s[0],s.slice(1).join(" "));return}else if(n&&k){let i=Ee(n,s[0]);if(i){let d=s.slice(1).join(" ");await J(i,d);return}else{let d=`${k}.py`;if((0,K.existsSync)(d)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Python\u6587\u4EF6":"Found Python file"}: ${d}`,color:"yellow"})),await M(`prun ${d}`);let{status:y}=await(0,f.jsShell)(`python ${d}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(y===0?(0,a.default)({color:"green",text:`
|
|
16
|
+
If you encounter any problems, you can ${(0,a.default)({color:"magenta",text:o})}.
|
|
17
|
+
If you like it, please ${(0,a.default)({text:i,bold:!0,color:"cyan"})} `}))}else if(n[0]?.endsWith(".py")||n[0]?.endsWith(".rs")){await Kt(n[0],r,s);return}let l;try{l=await(0,f.getPkgTool)()}catch{try{if(await B.default.readFile(U.default.resolve(process.cwd(),"./Makefile"),"utf-8")){l="make";let d=await xt("./Makefile"),m=d.reduce((h,w)=>{let{name:L,detail:A}=w;return h[L]=A,h},{}),y="";if(t)y=bt(m,t);else{let{result:h,status:w}=await(0,f.jsShell)(`echo "${d.map(L=>L.name).join(`
|
|
18
|
+
`)}" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,"pipe");if(w===q)return W();y=h}await J(y.trim(),"");return}else return u((0,a.default)({color:"red",text:kt}))}catch{if(n[0]!=="find")return u((0,a.default)({color:"red",text:kt}))}}let[$,T,k]=Zt(n),R=$,_;if(n[0]==="find"){if(T)await V(l),R=M.filter(o=>o.includes(T))[0];else if(l==="yarn"){if(await V(l),!M.length)return u((0,a.default)({color:"yellow",text:e}));let{result:o,status:i}=await(0,f.jsShell)(`echo ${M.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(R=o,i===q)return W()}else if(l==="pnpm"){if(await V(l),!M.length)return u((0,a.default)({color:"yellow",text:e}));let{result:o,status:i}=await(0,f.jsShell)(`echo ${M.join(",")} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${g?"\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u76EE\u5F55":"Please select a directory to execute"}"`,["inherit","pipe","inherit"]);if(i===q)return W();R=o.trim()}else return u((0,a.default)({color:"red",text:g?"find\u6307\u4EE4\u53EA\u80FD\u652F\u6301\u5728yarn\u6216pnpm\u7684monorepo\u6A21\u5F0F\u4E0B\u4F7F\u7528":"find command only support yarn or pnpm"}));_=await ot()}else if(_=await ot(),$&&O&&!O[$]||!O)try{let o=(await(0,f.getPkg)("./package.json")||{})?.scripts;if(o&&o[n[0]]){await J(n[0],n.slice(1).join(" "));return}else if(o&&$){let i=bt(o,n[0]);if(i){let d=n.slice(1).join(" ");await J(i,d);return}else{let d=`${$}.py`;if((0,K.existsSync)(d)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Python\u6587\u4EF6":"Found Python file"}: ${d}`,color:"yellow"})),await P(`prun ${d}`);let{status:y}=await(0,f.jsShell)(`python ${d}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(y===0?(0,a.default)({color:"green",text:`
|
|
20
19
|
"prun ${d}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
21
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${d}"`})} ${
|
|
20
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${d}"`})} ${s} \u274C`}));return}let m=`${$}.rs`;if((0,K.existsSync)(m)){u((0,a.default)({text:`\u{1F914} ${g?"\u627E\u5230Rust\u6587\u4EF6":"Found Rust file"}: ${m}`,color:"yellow"})),await P(`prun ${m}`);let{status:y}=await(0,f.jsShell)(`rustc ${m}`,{errorExit:!1,isLog:!1,stdio:"inherit"});if(y===0){let{status:h}=await(0,f.jsShell)(`./${n[0]}`,{errorExit:!1,isLog:!1,stdio:"inherit"});u(h===0?(0,a.default)({color:"green",text:`
|
|
22
21
|
"prun ${m}" ${r} \u{1F389}`}):(0,a.default)({color:"red",text:`
|
|
23
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${
|
|
24
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${
|
|
25
|
-
${
|
|
26
|
-
${
|
|
27
|
-
command '${E}' ${
|
|
28
|
-
prun '${
|
|
29
|
-
command ${(0,a.default)({bold:!0,color:"cyan",text:`'${n
|
|
30
|
-
|
|
31
|
-
`).forEach(
|
|
32
|
-
`);await
|
|
22
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${s} \u274C`}))}else u((0,a.default)({color:"red",text:`
|
|
23
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`"prun ${m}"`})} ${s} \u274C`}));return}u((0,a.default)({color:"red",text:`"${n[0]}" ${g?"\u5728\u5DE5\u4F5C\u533A\u3001\u5F53\u524D\u76EE\u5F55\u4E2D\u627E\u4E0D\u5230\u4EFB\u4F55\u53EF\u6267\u884C\u7684\u811A\u672C,\u8BF7\u68C0\u67E5":"is not found in workspace, current directory or current scripts, please check"}`})),process.exit(1)}}}catch{}if(!_)return u((0,a.default)({color:"red",text:g?"\u627E\u4E0D\u5230\u4EFB\u4F55\u53EF\u6267\u884C\u811A\u672C":"No scripts found"}));let F=[],E="";if(!T||n[0]==="find"&&(!n[2]||n[2].startsWith("--"))){let o=Object.keys(_).reduce((m,y)=>{let h=_[y];return F.push(y),m+=`"${y}: ${h.replace(/\\/g,"\\\\").replace(/(["`])/g,"\\$1")}"${Rt}`,m},""),{result:i,status:d}=await(0,f.jsShell)(`echo ${o} | sed "s/${Rt}/\\n/g" | gum filter --placeholder=" \u{1F914}\u8BF7\u9009\u62E9\u4E00\u4E2A\u8981\u6267\u884C\u7684\u6307\u4EE4"`,{stdio:["inherit","pipe","inherit"],isLog:!1});if(d===q)return W();E=i.substring(0,i.indexOf(": "))}if(!T&&!E)return W();u((0,a.default)({text:`\u{1F914} ${Et} ${E}`,color:"magenta"}));let[_t,st]=await St(),Ct=_t.replace(/\s+/g," "),{status:Lt,result:It=""}=await(0,f.jsShell)(Ct,{errorExit:!1,stdio:"inherit"});if(Lt===0)return u((0,a.default)({color:"green",text:`
|
|
24
|
+
${st} \u{1F389}`}));if(It.includes("pnpm versions with respective Node.js version support")){u((0,a.default)({text:g?"\u6B63\u5728\u5C1D\u8BD5\u4F7F\u7528 npm \u518D\u6B21\u6267\u884C...":"Trying to use npm to run again...",color:"yellow"}));let{status:o}=await(0,f.jsShell)(`npm run ${E}${k?` -- ${k}`:""}`,"inherit");if(o===0)return u((0,a.default)({color:"green",text:`
|
|
25
|
+
${st} \u{1F389}`}))}u((0,a.default)({color:"red",text:`
|
|
26
|
+
command '${E}' ${s} \u274C`}));function it(o){return F.find(i=>i===o)??F.find(i=>o.startsWith(i))}async function St(){let o="",i="",d=l!=="yarn";l==="npm"?(i=k?` -- ${k}`:"",o=R?` --prefix ${R} `:" "):l==="pnpm"?(i=k?` ${k}`:"",o=R?` --filter ${R} `:" "):l==="yarn"?(i=k?` ${k}`:"",o=R?` workspace ${R} `:" "):l==="bun"&&(i=k?` ${k}`:"",o="");let m="",y="";if(i&&!i.startsWith(" --")){let at=i.split(" ").filter(Boolean);m=at[0],i=at.slice(1).join(" ")}let h=`${l}${d?" run":" "}${o} ${m||(E?it(E)||E:T)} ${vt(i)?`-- ${i}`:i}`;E=`${m||(E?it(E):T)}`,n[0]==="find"?y=`pfind ${R} ${E} ${i}`.replace(/\s+/g," ").trim():y=`prun ${E} ${i}`.replace(/\s+/g," ").trim(),await P(y);let w=y.split(" "),L=w.slice(-1)[0];w[w.length-1]=`'${L}'`;let A=w.join(" ");return[h,A]}async function ot(){try{if(!R||l==="bun"||l==="npm")return(await(0,f.getPkg)("./package.json"))?.scripts;if(l==="pnpm")return(await V(l))[R]||(await(0,f.getPkg)(`${R}/package.json`))?.scripts;if(l==="yarn")return(await V(l))[R]||(await(0,f.getPkg)(`${R}/package.json`))?.scripts}catch{}}function vt(o){return n[0]==="find",n[1]&&o}async function J(o,i){let d,m="",y=n[0]?.trim();switch(o&&y&&y!==o?u((0,a.default)({text:`\u{1F914} ${(0,a.default)({text:`'${n[0]}'`,color:"cyan"})} ${g?"\u81EA\u52A8\u7684\u4E3A\u60A8\u5339\u914D\u6210":"automatically match for you to"} ${(0,a.default)({text:`'${o}${i?` ${i}`:""}'`,color:"cyan"})} `,color:"yellow"})):o&&u((0,a.default)({text:`\u{1F914} ${Et} ${o}`,color:"magenta"})),l){case"npm":{let{status:h,result:w}=await(0,f.jsShell)(`npm run ${o}${i?` -- ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"pnpm":{let{status:h,result:w=""}=await(0,f.jsShell)(`pnpm run ${o}${i?` ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});if(m=w,d=h,m.includes("pnpm versions with respective Node.js version support")){u((0,a.default)({text:g?"\u6B63\u5728\u5C1D\u8BD5\u4F7F\u7528 npm \u518D\u6B21\u6267\u884C...":"Trying to use npm to run again...",color:"yellow"}));let{status:L,result:A}=await(0,f.jsShell)(`npm run ${o}${i?` -- ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=L,m=A}break}case"yarn":{let{status:h,result:w}=await(0,f.jsShell)(`yarn ${o}${i?` ${i}`:""}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"bun":{let{status:h,result:w}=await(0,f.jsShell)(`bun run ${o} ${i}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}case"make":{let{status:h,result:w}=await(0,f.jsShell)(`make ${o} ${i}`,{errorExit:!1,isLog:!1,stdio:"inherit"});d=h,m=w;break}}return d===0?(await P(`prun ${o}${i?` ${i}`:""}`),u((0,a.default)({color:"green",text:`
|
|
27
|
+
prun '${o}${i?` ${i}`:""}' ${r} \u{1F389}`}))):u((0,a.default)({color:"red",text:`
|
|
28
|
+
command ${(0,a.default)({bold:!0,color:"cyan",text:`'${o||n[0]}${i?` ${i}`:""}'`})} ${s} \u274C`}))}}async function Ut(t){let e=t==="pnpm"?U.default.resolve(process.cwd(),"pnpm-workspace.yaml"):U.default.resolve(process.cwd(),"package.json");try{return await B.default.readFile(e,"utf-8")}catch{return""}}function Jt(t,e){if(t==="pnpm")return Yt.parse(e)?.packages||[];{let r=JSON.parse(e)?.workspaces;return(0,Tt.isPlainObject)(r)?r?.packages||[]:r||[]}}async function Xt(t){if(O)return O;let e=await Ut(t),r=Jt(t,e);return O=await Qt(r)||{},M=Object.keys(O).filter(s=>O[s]&&Object.keys(O[s]).length),O}async function Qt(t){if(!t.length)return{};let e=await(0,jt.default)(t.map(s=>`${s}/package.json`),{dot:!0,ignore:["**/node_modules/**"]});return(await Promise.all(e.map(async s=>{let n=await(0,f.getPkg)(s);if(!n)return null;let{name:l,scripts:$}=n;return{name:l,scripts:$}}))).reduce((s,n)=>(!n||!n.name||!n.scripts||(s[n.name]=Object.keys(n.scripts).reduce((l,$)=>($.startsWith("//")||(l[$]=n.scripts[$]),l),{})),s),{})}async function V(t){return Xt(t)}function Zt(t){let e=t[0];return e?e.startsWith("--")?["","",t.join(" ")]:t[1]&&t[1].startsWith("--")?[e,"",t.slice(1).join(" ")]:[e,t[1],t.slice(2).join(" ")]:["","",""]}function bt(t,e){let r=Object.keys(t),s=r.find(n=>n.startsWith(e));if(s)return s;try{let n=new RegExp(e.split("").join("[_-\\w$.:]*"));return r.find(l=>n.test(l))}catch(n){u((0,a.default)({text:`${g?"\u6B63\u5219\u9519\u8BEF":"RegExp error"}: ${n}`,color:"red"})),process.exit(1)}}function W(){return u((0,a.default)({color:"yellow",text:Dt})),process.exit()}async function P(t){u((0,a.default)({text:`${g?"\u5FEB\u6377\u6307\u4EE4":"shortcut command"}: ${t}`,color:"blue",bold:!0}));let e=`${process.env.HOME}/.zsh_history`;try{if(!(0,K.existsSync)(e))return;let r=await B.default.readFile(e,"utf8"),n=new Date().getTime()/1e3,l=`${r}: ${n.toFixed(0)}:0;${t}
|
|
29
|
+
`,$=[];l.split(`
|
|
30
|
+
`).forEach(k=>{let R=k.split(";").slice(1).join(";"),_=$.findIndex(F=>F.split(";").slice(1).join(";")===R);_!==-1&&$.splice(_,1),$.push(k)});let T=$.join(`
|
|
31
|
+
`);await B.default.writeFile(e,T)}catch{}}0&&(module.exports={ccommand});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccommand",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.77",
|
|
4
4
|
"packageManager": "pnpm@6.35.1",
|
|
5
5
|
"description": "ccommand",
|
|
6
6
|
"author": "Simon He",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@simon_he/colorize": "^0.0.1",
|
|
53
53
|
"build": "^0.1.4",
|
|
54
54
|
"fast-glob": "^3.3.3",
|
|
55
|
-
"lazy-js-utils": "^0.1.
|
|
55
|
+
"lazy-js-utils": "^0.1.37",
|
|
56
56
|
"yamljs": "^0.3.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|