next-update
Version:
Tests if module's dependencies can be updated to latest version
95 lines (88 loc) • 2.62 kB
JavaScript
#!/usr/bin/env node
var report = require('./src/report').report;
var pkg = require('./package.json');
var nextUpdate = require('./src/next-update');
var revert = require('./src/revert');
var info = pkg.name + ' - ' + pkg.description + '\n' +
' version: ' + pkg.version + '\n' +
' author: ' + JSON.stringify(pkg.author);
var optimist = require('optimist');
var program = optimist
.options('revert', {
boolean: true,
description: 'install original module versions listed in package.json',
default: false
})
.options('available', {
boolean: true,
alias: 'a',
description: 'only query available later versions, do not test them',
default: false
})
.options('module', {
string: true,
alias: 'm',
description: 'checks specific module, can include version name@version',
default: null
})
.option('latest', {
boolean: true,
description: 'only check latest available update',
default: true
})
.option('color', {
boolean: true,
alias: 'c',
description: 'color terminal output (if available)',
default: true
})
.option('version', {
boolean: true,
alias: 'v',
description: 'show version and exit',
default: false
})
.option('test', {
string: true,
alias: 't',
description: 'custom test command to run instead of npm test'
})
.option('all', {
boolean: true,
default: false,
description: 'install all modules at once before testing'
})
.usage(info)
.argv;
if (program.version) {
console.log(info);
process.exit(0);
}
if (program.help) {
optimist.showHelp();
process.exit(0);
}
if (program.available) {
nextUpdate.available(program.module);
} else if (program.revert) {
revert(program.module)
.then(function () {
console.log('done reverting');
}, function (error) {
console.error('error while reverting\n', error);
});
} else {
var checkAllPromise = nextUpdate.checkAllUpdates({
names: program.module,
latest: program.latest,
testCommand: program.test,
all: program.all
});
checkAllPromise.then(function (results) {
report(results, program.color);
}, function (error) {
console.error('ERROR testing next working updates\n', error);
console.error(error.stack);
throw new Error(error);
});
}