UNPKG

ut-tools

Version:

Build and Release management automation package.

62 lines (59 loc) 3.33 kB
/* eslint no-console:0 */ const path = require('path'); const helpers = require('./helpers'); module.exports = (args) => { helpers.isUt5Directory().then(isUt5Directory => { let command = 'npm'; if (process.platform === 'win32') { command = 'npm.cmd'; } return helpers.execute(command, ['outdated']) .then(e => { const toUpdate = []; e.split('\n').map(module => { if (module.indexOf('ut-') === 0) { const versions = module.split(/\s+/); const current = versions[2].split(/\./g); const latest = versions[3].split(/\./g); const needUpdate = (parseInt(current[0]) < parseInt(latest[0]) || (parseInt(current[0]) === parseInt(latest[0]) && parseInt(current[1]) < parseInt(latest[1])) || ((parseInt(current[0]) === parseInt(latest[0]) && parseInt(current[1]) === parseInt(latest[1])) && parseInt(current[2]) < parseInt(latest[2]))); if (needUpdate) { toUpdate.push({ name: versions[0], current: versions[2], latest: versions[3] }); } } }); const packageJson = require(path.resolve(helpers.currentDir, 'package.json')); const text = []; toUpdate.forEach(module => { if (module.name in packageJson.dependencies) { packageJson.dependencies[module.name] = packageJson.dependencies[module.name].replace(module.current, module.latest); text.push(`👆 ${helpers.Bold}${module.name}${helpers.Reset} updated from ${module.current} to ${helpers.FgGreen}${module.latest}${helpers.Reset} in dependencies`); } if (module.name in packageJson.devDependencies) { packageJson.devDependencies[module.name] = packageJson.devDependencies[module.name].replace(module.current, module.latest); text.push(`👆 ${helpers.Bold}${module.name}${helpers.Reset} updated from ${module.current} to ${helpers.FgGreen}${module.latest}${helpers.Reset} in devDependencies`); } }); return helpers.writeFile(path.resolve(helpers.currentDir, 'package.json'), JSON.stringify(packageJson, null, 2) + '\n').then(ok => { console.log(helpers.ok({ msg: `All versions are up to date! ${text.join('\n')}` })); return text; }).catch(e => { console.log(helpers.error({msg: `Error executing npm outdated in ${helpers.fullpath}: ${e}`})); }); }) .catch(e => { console.log(helpers.error({msg: `Error executing npm outdated in ${helpers.fullpath}: ${e}`})); }); }).catch(err => { console.log(helpers.error({msg: `Couldn't find directory dev or node_modules in ${helpers.currentDir} ${err}`})); return err; }); };