@ou-imdt/create
Version:
Command line tool to create team boilerplate.
46 lines (41 loc) • 1.67 kB
JavaScript
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;
}
};