UNPKG

constatic

Version:

Constatic is a CLI for creating and managing modern TypeScript projects, providing an organized structure and features that streamline development.

4 lines (3 loc) 2.76 kB
import e from"chalk";import{cliLang as C}from"./lang.js";import{setTimeout as V}from"node:timers/promises";function d(t,r){const c=C.get();return r?r(t[c]):t[c]}const l={get tab(){return e.cyan("<tab>")},get enter(){return e.cyan("<enter>")},get space(){return d({"en-US":e.cyan("<space>"),"pt-BR":e.cyan("<espa\xE7o>")})},get a(){return e.cyan("<a>")}},B={get checkbox(){return` `+d({"en-US":`Controls: ${l.space} select/deselect | ${l.a} select all | ${l.enter} proceed`,"pt-BR":`Controles: ${l.space} selecionar/deselecionar | ${l.a} selecionar tudo | ${l.enter} prosseguir`},e.dim)},get searchSelect(){const t=e.cyan("<tab>"),r=e.cyan("<enter>");return()=>` `+d({"en-US":`Controls: ${t} select/deselect | ${r} proceed`,"pt-BR":`Controles: ${t} selecionar/desselecionar | ${r} prosseguir`},e.dim)}},U={get back(){return d({"en-US":e.dim("\u2936 Back"),"pt-BR":e.dim("\u2936 Voltar")})}},E={azoxo:"#5865F2"};function h(){console.log()}const P={"top-left":"\u256D","top-right":"\u256E","bottom-right":"\u256F","bottom-left":"\u2570"};function i(t){return typeof t=="function"?t():t}async function I(t,r){const c=await i(t.meta||{}),m=Object.entries(await i(t.subCommands||{})).map(([a,n])=>({name:a,...n})),b=await i(r?.meta||{}),p=Object.entries(await i(t.args||{})).map(([a,n])=>(n.name=a,n)),g=p.filter(a=>a.type==="positional"),u=p.filter(a=>a.type!=="positional"),y=m.length>=1?"[subcommand]":p.length>=1?"[--flags] "+g.map(({name:a})=>`<${a}>`).join(" "):"",x=b.name?`${b.name} ${c.name}`:c.name;if(console.log(e.dim(`${c.description}`)),console.log(e.cyan("$"),e.underline("Command usage:"),e.cyan(x),e.cyan(y)),h(),m.length>=1){console.log(e.blue("$"),e.underline("Subcommands:"));const a=Math.max(...m.map(n=>n.name.length));for(const n of m){const o=`<${n.name}>`.padEnd(a+2," "),s=await i(n.meta||{});console.log(` ${e.blue(o)} ${e.gray(s.description)}`)}h()}if(g.length>=1){console.log(e.blue("\u25C6"),e.underline("Command args:"));const a=Math.max(...g.map(n=>n.name.length));for(const{name:n,description:o,valueHint:s}of g){const f=`<${n}>`.padEnd(a+2," ");console.log(` ${e.blue(f)} ${e.gray(o)} ${s?`: ${s}`:""}`)}h()}if(u.length>=1){console.log(e.blue("\u2691"),e.underline("Command flags:"));const a=Math.max(...u.map(n=>{const o=(Array.isArray(n.alias)?n.alias:n.alias?[n.alias]:[]).map(s=>s.length===1?`-${s}`:`--${s}`);return o.push(`--${n.name}`),o.join(", ").length}));for(const n of u){const o=(Array.isArray(n.alias)?n.alias:n.alias?[n.alias]:[]).map($=>$.length===1?`-${$}`:`--${$}`);o.push(`--${n.name}`);const f=o.join(", ").padEnd(a+1," ");console.log(` ${e.blue(f)} ${e.gray(n.description)}`)}}}export{P as cliTableChars,E as colors,U as commonTexts,h as divider,B as instructions,I as showUsage,V as sleep,d as uiMessage};