@yunarch/config-web
Version:
Shared configurations for web projects.
1 lines • 978 B
JavaScript
import{promisify as e,styleText as t,types as n}from"node:util";import{execFile as r}from"node:child_process";import{Command as i}from"commander";import a from"ora";const o=e(r);function s(e,t,n={}){return n.shell?o([e,...t??[]].join(` `),n):o(e,t,n)}async function c(e){let{command:r,name:i,options:o}=e,s=a(i);s.spinner=o?.spinner??`aesthetic`;let c=Date.now();s.start();try{let e=n.isPromise(r)?await r:await r(s);return s.succeed(o?.showTime?`${t(`dim`,`${Date.now()-c}ms`)} ${i}`:void 0),await new Promise(e=>{setTimeout(e,0)}),e}catch(e){let n=e;throw s.fail(t(`red`,n.stderr??n.message??``)),e}}function l(){let e=new i;return e.configureHelp({styleTitle:e=>t(`bold`,e),styleCommandText:e=>t(`cyan`,e),styleCommandDescription:e=>t(`magenta`,e),styleDescriptionText:e=>t(`italic`,e),styleOptionText:e=>t(`green`,e),styleArgumentText:e=>t(`yellow`,e),styleSubcommandText:e=>t(`blue`,e)}).configureOutput({outputError:(e,n)=>{n(t(`red`,e))}}),e}export{l as n,c as r,s as t};