UNPKG

1.34 kBJavaScriptView Raw
1var npm = require('npm');
2var util = require('util');
3
4module.exports = latest;
5module.exports.checkupdate = checkupdate;
6
7/**
8 * get the latest version of a package
9 */
10function latest(name, cb) {
11 npm.load({name: name, loglevel: 'silent'}, function(err) {
12 if (err) return cb(err);
13 npm.commands.show([name, 'versions'], true, function(err, data) {
14 if (err) return cb(err);
15 var versions = data[Object.keys(data)[0]].versions;
16 var latest = versions[versions.length - 1];
17 cb(null, latest);
18 });
19 });
20};
21
22/**
23 * Convenience method
24 *
25 * Given a package.json style obj, determine if there are updates available
26 *
27 * Optionally, give true as a second argument to exit after writing the message
28 */
29function checkupdate(package, cb) {
30 latest(package.name, function(err, v) {
31 var s = '';
32 var ret = 0;
33 if (err) {
34 s = ">>> couldn't determine latest version";
35 ret = 2;
36 } else if (v !== package.version) {
37 s = util.format('>>> you are running version %s, a newer version %s is available\n',
38 package.version, v);
39 s += util.format('>>> consider updating with: [sudo] npm update -g %s',
40 package.name);
41 ret = 1;
42 } else {
43 s = util.format('you are running the latest version %s', package.version);
44 ret = 0;
45 }
46 cb(ret, s);
47 });
48};