1 | var npm = require('npm');
|
2 | var util = require('util');
|
3 |
|
4 | module.exports = latest;
|
5 | module.exports.checkupdate = checkupdate;
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | function 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 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | function 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 | };
|