UNPKG

@digipolis/start-ui

Version:
87 lines (75 loc) 2.5 kB
#!/usr/bin/env node import './globals.js'; import fs from 'fs'; import chalk from 'chalk'; import inquirer from 'inquirer'; import program from 'commander'; import generators from './generators/index.js'; import options from './config/options.js'; import { questions } from './config/questions.js'; import { mapBranding } from './utils/branding.js'; import { errorLog, fancyLog } from './utils/log.js'; import debug from './utils/debug.js'; const rawdata = fs.readFileSync(`${__basedir}/package.json`); const { version } = JSON.parse(rawdata); const { log } = console; const pjson = { version }; // Run commander with generator options options(); function finishInstallation(config) { if (config.backend) { log(chalk.white.bold(` ✅ ${chalk.green.bold('Done!')} Now run ${chalk.cyan.bold('npm start')} in both your backend and frontend directory. `)); } else { log(chalk.white.bold(` ✅ ${chalk.green.bold('Done!')} Now run ${chalk.cyan.bold('npm start')} in your frontend directory. `)); } } async function askQuestions() { let config = await inquirer.prompt(questions); const { frontend, backend } = config; if (config.backend && generators[backend].getQuestions) { const backendConfig = await inquirer.prompt(generators[backend].getQuestions()); config = { ...config, ...backendConfig }; } if (config.frontend && generators[frontend].getQuestions) { const frontendConfig = await inquirer.prompt(generators[frontend].getQuestions()); config = { ...config, ...frontendConfig }; } return config; } /** * Go! * First check if the starter app was intended to run on its own. */ async function run() { fancyLog('cyan.bold', `Welcome to the Digipolis starter kit! (v${pjson.version})`, '='); if (program.setup) { const config = await askQuestions(); config.name = program.name; if (program.debug) { debug.enable(); } const { frontend, backend } = config; if (frontend) await generators[frontend].start(config); if (backend) await generators[backend].start(config); finishInstallation(config); } else { program.branding = await mapBranding(program.branding); const config = program; if (program.debug) { debug.enable(); } const { frontend, backend } = config; if (frontend) await generators[frontend].start(config); if (backend) await generators[backend].start(config); finishInstallation(config); } } try { run(); } catch (error) { errorLog(error); }