UNPKG

start-coding-challenge

Version:
11 lines 3.01 kB
#!/usr/bin/env node import{Command as P}from"commander";import d from"inquirer";import k from"path";import r from"path";import{fileURLToPath as v}from"url";import a from"chalk";import s from"fs-extra";import b from"inquirer";import j from"ora";import{exec as h}from"child_process";import{promisify as x}from"util";var l=x(h);var $=v(import.meta.url),S=r.dirname($),m=r.join(S,"../"),f=async({appName:o,projectDir:e,language:t})=>{let p=r.join(m,`src/template/${t==="javascript"?"js":"ts"}`),i=j(`Scaffolding in: ${e}... `).start();if(s.existsSync(e))if(s.readdirSync(e).length===0)i.info(`${a.cyan.bold(o)} exists but is empty, continuing... `);else{i.stopAndPersist();let{overwriteDir:w}=await b.prompt({name:"overwriteDir",type:"confirm",message:`${a.redBright.bold("Warning:")} ${a.cyan.bold(o)} already exists and isn't empty. Do you want to overwrite it?`,default:!1});w?(i.info(`Emptying ${a.cyan.bold(o)} and creating app.. `),s.emptyDirSync(e)):(i.fail("Aborting installation..."),process.exit(0))}let u=r.join(m,`src/exercises/${t==="typescript"?"ts":"js"}`),y=r.join(e,"src");await s.copy(u,y),i.start(),await s.copy(p,e),await s.rename(r.join(e,"_gitignore"),r.join(e,".gitignore")),await l("npm install",{cwd:e}),i.succeed(`${a.cyan.bold(o)} scaffolded successfully! `)};var g=async({appName:o,language:e})=>{let t=k.resolve(process.cwd(),o);return await f({appName:o,projectDir:t,language:e}),t};import c from"chalk";var n={error(...o){console.log(c.red(...o))},warn(...o){console.log(c.yellow(...o))},info(...o){console.log(c.cyan(...o))},infoBold(...o){console.log(c.cyan.bold(...o))},success(...o){console.log(c.green(...o))}};var O=async()=>{let{appName:o,language:e}=await T(),t=await g({appName:o,language:e});n.success(`Created project in ${t} `),n.infoBold("Now run the following commands: "),n.info(`$ cd ${t} `),n.infoBold("Open an exercise and start coding. To test if it works, run: "),n.info(`$ npm test <exerciseName> `),n.infoBold("Example: "),n.info(`$ npm test multiply `),process.exit(0)};async function T(){new P().name("Start Coding Challenge").description("A collection of coding challenges to improve your Javascript/Typescript skills.").argument("[dir]","The name of the application, as well as the name of the directory to create","coding-challenges").parse(process.argv);let{appName:e}=await d.prompt({name:"appName",type:"input",message:"What will your project be called?",default:"coding-challenges",transformer:p=>p.trim()}),{language:t}=await d.prompt({name:"language",type:"list",message:"Will you be using JavaScript or TypeScript?",choices:[{name:"TypeScript",value:"typescript",short:"TypeScript"},{name:"JavaScript",value:"javascript",short:"JavaScript"}],default:"typescript"});return{appName:e,language:t}}O().catch(o=>{console.error("Aborting installation..."),o instanceof Error?console.error(o):(console.error("An unknown error has occurred. Please open an issue on github with the below:"),console.log(o)),process.exit(1)}); //# sourceMappingURL=index.js.map