agahi
Version:
Client-side engine that renders Markdown files as a docs site in the browser—no build step.
3 lines (2 loc) • 1.21 kB
JavaScript
import{Command as e}from"commander";import t from"ora";import r from"process";import n from"path";import i from"degit";import o from"fs";var a="Agahi",s="0.0.0",c="Client-side engine that renders Markdown files as a docs site in the browser—no build step.";const m=new e;m.name(a).description(c).version(s).enablePositionalOptions(),m.command("init").alias("i").description(`Initialize a new ${a} project`).argument("[name]","Project name (optional to create folder with given name in current directory)").action((async e=>{const a=r.cwd(),s=e?e.trim():n.basename(a);(e=>{/^[a-z0-9-._~]+$/.test(e)||t().warn(` Invalid project name: "${e}"; Project names can only contain lowercase letters, numbers, and the characters -._~.`)})(s);const c=e?n.resolve(a,s):a;o.existsSync(c)&&o.readdirSync(c).length>0&&(console.error(`The directory "${s}" already exists and is not empty.`),r.exit(1));const m=t({text:"Cloning starter template...",spinner:"dots"}).start();try{const e=i("tenelabs/agahi-starter",{cache:!1,force:!0,verbose:!1});await e.clone(c),m.succeed(`Project "${s}" initialized in "${c}"`)}catch(e){m.fail("Failed to initialize project."),console.error(e),r.exit(1)}})),m.parse();