UNPKG

jj-cli

Version:
1 lines 3.07 kB
"use strict";const e=require("timers");async function t(e){const t=await Promise.resolve().then((()=>require("which")));return new Promise((r=>{t(e,(e=>{r(!e)}))}))}function r(t){return new Promise((r=>e.setTimeout(r,t)))}exports.isInstalled=t,exports.wait=r;const o=["s","ms","μp"];function s(e){let t=e[0]+e[1]/1e9,r=0;for(;r<o.length-1&&!(t>=1);r++,t*=1e3);return t.toFixed(2)+o[r]}async function n(e,t){const r=require("ora")(e).start();try{const o=process.hrtime();let n;const i=await t((e=>n=e)),a=process.hrtime(o),c=require("chalk");return n?r.info(`${e} ${c.dim("– "+n)}`):r.succeed(`${e} ${c.dim("in "+s(a))}`),i}catch(t){throw r.fail(`${e}: ${t.message?t.message:""}`),r.stop(),t}}async function i(e,t){const r=require("ora"),o=require("chalk"),{exec:n}=require("child_process"),i=r(e).start();let a=[];return new Promise(((r,c)=>{const m=process.hrtime(),u=n(t),p=t=>{i.stop(),console.log(t.trim()),a.push(t.trim()),i.text=`${e} ${o.dim("- "+a[a.length-1])}`,i.start()};u.stdout.on("data",p),u.stderr.on("data",p),u.on("close",(t=>{const n=process.hrtime(m);0===t?(a.length>0?i.succeed(`${e} ${o.dim("completed in "+s(n))}`):i.succeed(`${e} ${o.dim("in "+s(n))}`),r()):(i.fail(`${e}: Command exited with code ${t}`),c(new Error(`Command exited with code ${t}`)))})),u.on("error",(t=>{i.fail(`${e}: ${t.message}`),c(t)}))}))}async function a(e){if(!e){const e=await Promise.resolve().then((()=>require("inquirer")));return(await e.prompt([{type:"input",name:"name",default:"App",message:"App name"}])).name}return e}async function c(e){const t=await Promise.resolve().then((()=>require("inquirer"))),r=await t.prompt([{type:"input",name:"url",default:"",message:e}]);return r&&r.url}async function m(){const e=await Promise.resolve().then((()=>require("inquirer")));return(await e.prompt({type:"list",name:"mode",message:"Please choose a platform to open:",choices:["ios","android"]})).mode.toLowerCase().trim()}async function u(e,t=!1){if(!e)return;const r=await Promise.resolve().then((()=>require("open")));await r(e,{wait:t})}async function p(e,t){const r=await Promise.resolve().then((()=>require("inquirer")));return(await r.prompt({type:"list",name:"mode",message:`Please choose a(an) ${e} to run:`,choices:t})).mode.toLowerCase().trim()}async function l(e,t){if(!e||0===e.length)throw new Error("source is empty");const r=await Promise.resolve().then((()=>require("inquirer"))),o=await Promise.resolve().then((()=>require("inquirer-autocomplete-prompt")));r.registerPrompt("autocomplete",o);const s=await r.prompt([{type:"autocomplete",name:t,suggestOnly:!1,message:`Please Enter / Choose Your ${t}: `,searchText:"Searching...",emptyText:"Nothing found!",source:async(t,r)=>(r=r||"",new Promise((function(t){t(e.filter((e=>{let t=e&&e.toLowerCase()||"",o=r&&r.toLowerCase()||"";return~t.indexOf(o)})))})))}]),n=s&&s[t]||"";return~e.indexOf(n)?n:null}exports.formatHrTime=s,exports.runTask=n,exports.runCommandWithTask=i,exports.getName=a,exports.askGenAuthUrl=c,exports.askPlatform=m,exports.openUrl=u,exports.askChoose=p,exports.askSelectList=l;