UNPKG

clixion

Version:

A flexible framework for building CLI applications

2 lines (1 loc) 3.17 kB
"use strict";var E=Object.create;var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var I=(e,n)=>{for(var r in n)d(e,r,{get:n[r],enumerable:!0})},h=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of O(n))!N.call(e,s)&&s!==r&&d(e,s,{get:()=>n[s],enumerable:!(o=R(n,s))||o.enumerable});return e};var p=(e,n,r)=>(r=e!=null?E(C(e)):{},h(n||!e||!e.__esModule?d(r,"default",{value:e,enumerable:!0}):r,e)),M=e=>h(d({},"__esModule",{value:!0}),e);var V={};I(V,{$:()=>G,$pm:()=>f,$pmDlx:()=>m,$pmExec:()=>$,$pmInstall:()=>W,$pmRun:()=>j,$pmX:()=>H,isPackageManagerInstalled:()=>F});module.exports=M(V);var S=require("child_process"),b=require("cross-spawn"),k=p(require("which"),1);var c=require("@clack/prompts"),t=require("kleur/colors"),g=require("@clack/prompts");function B(){return process.platform!=="win32"?process.env.TERM!=="linux":!!process.env.CI||!!process.env.WT_SESSION||!!process.env.TERMINUS_SUBLIME||process.env.ConEmuTask==="{cmd::Cmder}"||process.env.TERM_PROGRAM==="Terminus-Sublime"||process.env.TERM_PROGRAM==="vscode"||process.env.TERM==="xterm-256color"||process.env.TERM==="alacritty"||process.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var a=B(),A={success:a?"\u2705":"[OK]",error:a?"\u274C":"[ERROR]",info:a?"\u2139\uFE0F":"[INFO]",warning:a?"\u26A0\uFE0F":"[WARN]",debug:a?"\u{1F41E}":"[DEBUG]",verbose:a?"\u{1F50D}":"[DETAILS]",line:a?"\u2500\u2500":"----"};function J(e){return(0,t.red)(`${A.error} ${e}`)}function w(e){c.log.error(J(e))}var U=p(require("fs"),1),_=p(require("os"),1),l=p(require("path"),1),x=require("url"),T=p(require("which-pm-runs"),1),L={},D=z(),Z=l.default.dirname(D);function z(){let r=new Error().stack?.match(/^Error\s+at[^\r\n]+\s+at *(?:[^\r\n(]+\((.+?)(?::\d+:\d+)?\)|(.+?)(?::\d+:\d+)?) *([\r\n]|$)/),o=r?.[1]||r?.[2];return o?.startsWith("file://")?(0,x.fileURLToPath)(o):o||(0,x.fileURLToPath)(L.url)}function y(){return(0,T.default)()?.name||"npm"}var F=e=>new Promise(n=>{(0,S.exec)(`${e} --version`,(r,o,s)=>{n(!(r||s))})});function G(e,n,r){let o,s=new Promise(u=>{try{o=(0,b.spawn)(e,n,{cwd:r,stdio:"ignore"}),o.on("error",i=>{i&&w(String(i.message||i)),u(!1)}),o.on("close",i=>{u(i===0)})}catch{u(!1)}});return{abort:async()=>{o&&o.kill("SIGINT")},install:s}}var f=async(e,n=process.cwd(),r=process.env)=>{let o=y();if(e=Array.isArray(e)?e:[e],["exec","dlx"].includes(e[0]))switch(o){case"pnpm":case"yarn":break;case"bun":case"npm":{e=["x",...e.slice(1)];break}default:{e=["run",...e.slice(1)];break}}let s=await(0,k.default)(o),v=`${s} ${e.join(" ")}`;return new Promise((u,i)=>{(0,b.spawn)(s,e,{cwd:n,stdio:"inherit",env:r}).on("close",P=>{if(P!==0){i({command:v});return}u(!0)})})},W=async e=>{await f("install",e)},j=async(e,n)=>{await f(["run",...e.split(/\s+/)],n)},$=async(e,n)=>{await f(["exec",...e.split(/\s+/)],n)},m=async(e,n)=>{await f(["dlx",...e.split(/\s+/)],n)},H=async(e,n)=>{if(["pnpm","yarn"].includes(y()))try{await $(e,n)}catch{await m(e,n)}else await m(e,n)};0&&(module.exports={$,$pm,$pmDlx,$pmExec,$pmInstall,$pmRun,$pmX,isPackageManagerInstalled});