clixion
Version:
A flexible framework for building CLI applications
3 lines (2 loc) • 8.12 kB
JavaScript
"use strict";var W=Object.create;var b=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var j=(t,n)=>{for(var e in n)b(t,e,{get:n[e],enumerable:!0})},k=(t,n,e,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of F(n))!L.call(t,s)&&s!==e&&b(t,s,{get:()=>n[s],enumerable:!(i=z(n,s))||i.enumerable});return t};var f=(t,n,e)=>(e=t!=null?W(G(t)):{},k(n||!t||!t.__esModule?b(e,"default",{value:t,enumerable:!0}):e,t)),Y=t=>k(b({},"__esModule",{value:!0}),t);var gn={};j(gn,{Command:()=>h,Program:()=>v});module.exports=Y(gn);var _=f(require("yargs"),1),J=require("yargs/helpers");var a=require("@clack/prompts"),r=require("kleur/colors"),o=require("@clack/prompts");function H(){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 p=H(),x={success:p?"\u2705":"[OK]",error:p?"\u274C":"[ERROR]",info:p?"\u2139\uFE0F":"[INFO]",warning:p?"\u26A0\uFE0F":"[WARN]",debug:p?"\u{1F41E}":"[DEBUG]",verbose:p?"\u{1F50D}":"[DETAILS]",line:p?"\u2500\u2500":"----"},g={red:r.red,green:r.green,blue:r.blue,yellow:r.yellow,magenta:r.magenta,cyan:r.cyan,gray:r.gray,grey:r.grey,white:r.white,black:r.black},c={red:r.bgRed,green:r.bgGreen,blue:r.bgBlue,yellow:r.bgYellow,magenta:r.bgMagenta,cyan:r.bgCyan,white:r.bgWhite,black:r.bgBlack},l={reset:r.reset,bold:r.bold,dim:r.dim,italic:r.italic,underline:r.underline,inverse:r.inverse,hidden:r.hidden,strikethrough:r.strikethrough};function q(t){return(0,r.green)(`${x.success} ${t}`)}function E(t){return(0,r.red)(`${x.error} ${t}`)}function K(t){return(0,r.blue)(`${x.info} ${t}`)}function Z(t){return(0,r.yellow)(`${x.warning} ${t}`)}function I(t){a.log.info(K(t))}function R(t){a.log.success(q(t))}function N(t){a.log.step(t)}function $(t){a.log.warn(Z(t))}function B(t){a.log.error(E(t))}function y(t){console.error(`${O()}${E(t)}${O()}`),process.exit(1)}function O(t=1){return`
`.repeat(t)}async function C(t,n,e){let i=e&&await(0,a.text)({message:t,placeholder:n,defaultValue:n})||n;return i!==n&&d(i),i}async function T(t,n,e,i){let s=i&&await(0,a.select)({message:t,options:n,initialValue:e})||e;return s!==e&&d(s),s}async function w(t,n,e,i,s){let u=s===!0&&n===void 0?!1:i===!0&&n===void 0?!0:e?await(0,a.confirm)({message:t,initialValue:n}):n;return u!==n&&S(u),u}function d(t,n){M(t,n?e=>P(e)&&n(e):P,"string")}function S(t){M(t,X,"boolean")}function M(t,n,e){Q(t,n,e,typeof t)}function Q(t,n,e,i){nn(t)&&y("Operation canceled."),n(t)||y(`Invalid input${e?`: ${e} expected`:""}${i?`, ${i} provided`:""}.`)}function P(t){return typeof t=="string"||t instanceof String}function X(t){return typeof t=="boolean"}function nn(t){return(0,a.isCancel)(t)||typeof t=="symbol"}var en=f(require("fs"),1),tn=f(require("os"),1),m=f(require("path"),1),A=require("url"),rn=f(require("which-pm-runs"),1),an={},sn=on(),ln=m.default.dirname(sn);function on(){let e=new Error().stack?.match(/^Error\s+at[^\r\n]+\s+at *(?:[^\r\n(]+\((.+?)(?::\d+:\d+)?\)|(.+?)(?::\d+:\d+)?) *([\r\n]|$)/),i=e?.[1]||e?.[2];return i?.startsWith("file://")?(0,A.fileURLToPath)(i):i||(0,A.fileURLToPath)(an.url)}function U(){return!!(process.env.CI||process.env.GITHUB_ACTIONS)}function V(){return!1}var h=class{constructor(n,e){this.signature=n;this.description=e}arguments=new Map;options=new Map;examples=new Set;#n="";setArgument(n,e){return this.arguments.set(n,e),this}getArgument(n){return this.arguments.get(n)}hasArgument(n){return this.arguments.has(n)}argument(n,e){return e?this.setArgument(n,e):this.getArgument(n)}setOption(n,e){return this.options.set(n,e),this}getOption(n){return this.options.get(n)}hasOption(n){return this.options.has(n)}option(n,e){return e?this.setOption(n,e):this.getOption(n)}addExample(n,e){return this.examples.add({command:n,description:e}),this}getExample(n){return this.examples.values().find(e=>e.command===n||e.description===n)}example(n,e){return e?this.addExample(n,e):this.getExample(n)}getExamples(){return this.examples.values().toArray()}setUsage(n){return this.#n=n,this}getUsage(){return this.#n}usage(n){return n?this.setUsage(n):this.getUsage()}},v=class{constructor(n,e){this.name=n;this.version=e;this.configure()}#n=!1;#r=!1;#e=!1;#t=!1;#i={};commands=new Set;aliases=new Set;interactions=new Map;configure(){}addCommand(n,e){let i=new h(n,e);return this.#e&&i.option("yes",{alias:"y",type:"boolean",desc:"Skip all prompts by accepting defaults"}),this.#t&&i.option("no",{alias:"n",type:"boolean",desc:"Skip all prompts by declining defaults"}),this.commands.add(i),i}getCommand(n){return this.commands.values().find(e=>e.signature===n||e.description===n)}command(n,e){return e?this.addCommand(n,e):this.getCommand(n)}getCommands(){return this.commands.values().toArray()}strict(n=!0){return this.#n=n,this}conflict(n,e){return this.#i[n]=e,this}interactive(n=!0){return this.#r=n,this}useYes(n=!0){return this.#e=n,this}useNo(n=!0){return this.#t=n,this}addAlias(n,e){return this.aliases.add({shortName:n,longName:e}),this}getAlias(n){return this.aliases.values().find(e=>e.shortName===n||e.longName===n)}alias(n,e){return e?this.addAlias(n,e):this.getAlias(n)}getAliases(){return this.aliases.values().toArray()}async run(n=process.argv){let e=(0,J.hideBin)(n),i=this.parse(e),s;return this.isIt()?s=await this.interact(i):s=this.validate(i),await this.execute(s)}isIt(){return this.#r&&!(V()||U())}intercept(n,e){return this.setInteraction(n,e)}async interact(n){return this.validate(n)}parse(n){let e=(0,_.default)(n);e.scriptName(this.name),this.#n&&e.strict(),this.#e&&this.#t&&e.conflicts("yes","no"),this.#s(e),e.version(this.version);for(let[s,u]of Object.entries(this.#i))e.conflicts(s,u);for(let{shortName:s,longName:u}of this.aliases)e.alias(s,u);return e.argv}#s(n){for(let e of this.commands)this.#o(n,e)}#o(n,e){n.command(e.signature,e.description,i=>{this.#a(n,e.arguments),this.#u(n,e.options),this.#l(n,e.examples),i.usage(e.usage())})}#a(n,e){for(let[i,s]of e)this.#g(n,i,s)}#g(n,e,i){n.positional(e,i)}#u(n,e){for(let[i,s]of e)this.#c(n,i,s)}#c(n,e,i){n.option(e,i)}#l(n,e){for(let i of e)this.#p(n,i.command,i.description)}#p(n,e,i){n.example(e,i)}getInteraction(n){for(let e of this.interactions.keys())if(n.includes(e))return this.interactions.get(e)}setInteraction(n,e){return this.interactions.set(n,e),this}async scanBoolean(n,e,i){let s=this.getInteraction(e);return s!==void 0?(S(s),s):i!==void 0?w(e,i,this.isIt(),this.#e&&n.yes,this.#t&&n.no):w(e,void 0,this.isIt(),this.#e&&n.yes,this.#t&&n.no)}async scanString(n,e){let i=this.getInteraction(n);return i!==void 0?(d(i),i):e?C(n,e,this.isIt()):C(n,void 0,this.isIt())}async scanChoice(n,e,i){let s=this.getInteraction(n);return s!==void 0?(d(s,u=>e.find(D=>D.value===u)!==void 0),s):i?T(n,e,i,this.isIt()):T(n,e,void 0,this.isIt())}panic(n){y(n)}cancel(n){(0,o.cancel)(n)}intro(n){(0,o.intro)(n)}outro(n){(0,o.outro)(n)}note(n,e){(0,o.note)(n,e)}spinner(){return(0,o.spinner)()}info(n){I(n)}warn(n){$(n)}error(n){B(n)}step(n){N(n)}success(n){R(n)}red(n){return g.red(n)}green(n){return g.green(n)}blue(n){return g.blue(n)}yellow(n){return g.yellow(n)}magenta(n){return g.magenta(n)}cyan(n){return g.cyan(n)}gray(n){return g.gray(n)}grey(n){return g.grey(n)}white(n){return g.white(n)}black(n){return g.black(n)}bgRed(n){return c.red(n)}bgGreen(n){return c.green(n)}bgBlue(n){return c.blue(n)}bgYellow(n){return c.yellow(n)}bgMagenta(n){return c.magenta(n)}bgCyan(n){return c.cyan(n)}bgWhite(n){return c.white(n)}bgBlack(n){return c.black(n)}reset(n){return l.reset(n)}dim(n){return l.dim(n)}bold(n){return l.bold(n)}italic(n){return l.italic(n)}underline(n){return l.underline(n)}inverse(n){return l.inverse(n)}hidden(n){return l.hidden(n)}strikethrough(n){return l.strikethrough(n)}};0&&(module.exports={Command,Program});