UNPKG

@dotgov/core

Version:

DGS core.

52 lines (48 loc) 1.87 kB
const exec = require('child_process').exec; function getGitUser(callback) { exec("git config --global user.name", function (err, name) { if (err) { console.error(`Could not extract git user.\nPerhaps it's running on server.`); return; } callback(name.replace('\n', '')); }); }; function updatePackage(packageName) { return new Promise((resolve) => { if (packageName === '@dotgov/core') { return resolve({ packageName, success: true, message: 'Could not update myself.' }); } console.log(`Updating ${packageName}`); exec(`npm i ${packageName}@latest --force`, function (err) { const errorMessage = `Could not update ${packageName}.`; const successMessage = `Successfully update ${packageName}` console.log(err ? `${errorMessage}.\n${err}` : successMessage); return resolve({ packageName, success: !err, message: err ? errorMessage : successMessage, debug: err }); }); }); }; function updateDotgovs(activeDir) { const packageJson = require(`${activeDir}\\package.json`); const dotgovs = [ ...Object.keys(packageJson['dependencies']), ...Object.keys(packageJson['devDependencies']), ...Object.keys(packageJson['peerDependencies'] || {}), ].filter((key) => key.startsWith('@dotgov')); return dotgovs.reduce((prev, curr) => ( prev.then((accumulator) => updatePackage(curr).then((result) => accumulator.concat(result))) ), Promise.resolve([])); }; const updateDgs = (activeDir = process.cwd()) => { return new Promise((resolve, reject) => { getGitUser((user) => { if (user === 'Azure DevOps') { console.log('Skipping dotgov modules update for Azure.'); return reject(); } return updateDotgovs(activeDir).then(resolve); }); }); }; module.exports = { updateDgs };