UNPKG

create-graphql-guru

Version:

Command line scaffolding and generator for Graphql Guru

75 lines (63 loc) 1.92 kB
import program from 'commander'; import shell from 'shelljs'; import path from 'path'; import fs from 'fs'; import Bluebird from 'bluebird'; Bluebird.promisifyAll(fs); const dest = process.cwd(); const template = path.join(__dirname, '../templates/express'); const pkgPath = path.join(__dirname, '../templates/express/package.json'); const pkg = require(pkgPath); const { cd, cp, exec, error, mkdir } = shell; program.parse(process.argv); const appName = program.args[0]; const appFolder = `${dest}/${appName}`; pkg.name = appName; function createFolder (folder) { mkdir(folder); error() ? process.exit() : process.stdout.write(`Created ${appName} folder \n`); } function copyTemplate () { cp('-R', `${template}/*`, appFolder); cp('-R', `${template}/.*`, appFolder); error() ? process.exit() : process.stdout.write(`Express files copied to app folder\n`); } function install () { fs.writeFileAsync( `${appFolder}/package.json`, JSON.stringify(pkg, null, 2), error => { error ? process.exit() : process.stdout.write(`Updated package name \n`); } ) .then(() => yarn()) .then(() => { process.stdout.write('\n===========================================================\n'); exec(`echo Guru Files created:;ls`); process.stdout.write('\nnpm run dev starts the sever in development mode\n'); process.stdout.write('\nSchema and resolves can be found in server/modules directory\n'); process.stdout.write('\n============================================================'); }) .catch(error => { throw new Error(error); }); } function yarn () { cd(appFolder); exec('yarn install'); error() ? process.exit() : process.stdout.write(`Dependencies installed\n`); } function run () { if (appName) { createFolder(appName); copyTemplate(); install(); } else { program.help(); } } run();