UNPKG

@ou-imdt/create

Version:

Command line tool to create team boilerplate.

46 lines (41 loc) 1.67 kB
const process = require('process'); const ora = require('ora'); const axios = require('axios'); const to = require('await-to-js').default; const handleError = require('cli-handle-error'); const currentNodeVersion = process.versions.node; const semver = currentNodeVersion.split('.'); const currentMajor = semver[0]; const sym = require('log-symbols'); const {yellow, green, red} = require('chalk'); const spinner = ora({ text: '' }); const nodeReleaseURL = 'https://nodejs.org/download/release/index.json'; /** * Check Node version (major) is LTS. * * @param {Object} options */ module.exports = async(options) => { const defaultOptions = { fail: true }; const finalOptions = { ...defaultOptions, ...options }; spinner.start(`${yellow(`Node LTS Version info`)} fetching...\n`); const [err, res] = await to(axios.get(nodeReleaseURL)); handleError(`Node -v URL CALL FAILED`, err, false, false); const ltsVersion = res.data.filter((version) => version.lts)[0].version; const requiredNodeVersion = ltsVersion.slice(1).split('.'); const requiredMajor = requiredNodeVersion[0]; spinner.succeed(`${green(`Node LTS Version info`)} fetched\n`); const fail = ` ${sym.error} ${red(`Node version issue!`)} You are running Node ${red("v" + currentNodeVersion)} Required Node is ${green(ltsVersion)} or higher. ${sym.info} Please update your version of Node.js to run this program. ${sym.info} https://nodejs.org/en/download \n ${sym.info} or use nvm to install and use LTS version. "nvm install lts", "nvm use lts"\n `; if (currentMajor < Math.abs(requiredMajor)) { console.error(fail); finalOptions.fail && process.exit(1); return fail; } };