From cb934acb5d3bb4bb39c7e35d1a01440d0a7b38d8 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 9 Oct 2014 13:50:25 -0400 Subject: [PATCH] #2111 need latest version from api --- src/plugins.js | 43 +++++++++++++++++++----------- src/views/admin/extend/plugins.tpl | 1 + 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/plugins.js b/src/plugins.js index 35381a3fa0..237f0ddbb7 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -640,19 +640,18 @@ var fs = require('fs'), async.each(installedPlugins, function(plugin, next) { - pluginMap[plugin.id] = pluginMap[plugin.id] || {}; - pluginMap[plugin.id].id = pluginMap[plugin.id].id || plugin.id; - pluginMap[plugin.id].name = pluginMap[plugin.id].name || plugin.id; - pluginMap[plugin.id].description = plugin.description; - pluginMap[plugin.id].url = pluginMap[plugin.id].url || plugin.url; - pluginMap[plugin.id].installed = true; + pluginMap[plugin.name] = pluginMap[plugin.name] || {}; + pluginMap[plugin.name].id = pluginMap[plugin.name].id || plugin.name; + pluginMap[plugin.name].name = pluginMap[plugin.name].name || plugin.name; + pluginMap[plugin.name].description = plugin.description; + pluginMap[plugin.name].url = pluginMap[plugin.name].url || plugin.url; + pluginMap[plugin.name].installed = true; + pluginMap[plugin.name].active = plugin.active; + pluginMap[plugin.name].version = plugin.version; - Plugins.isActive(plugin.id, function(err, active) { - if (err) { - return next(err); - } - - pluginMap[plugin.id].active = active; + getVersion(plugin.name, function(err, version) { + pluginMap[plugin.name].latest = version; + pluginMap[plugin.name].outdated = version !== pluginMap[plugin.name].version; next(); }); }, function(err) { @@ -683,6 +682,19 @@ var fs = require('fs'), }); }; + function getVersion(name, callback) { + var npm = require('npm'); + npm.load({}, function() { + npm.commands.show([name, 'version'], true, function(err, version) { + if (err || !version) { + return callback(null, 'no version'); + } + var obj = Object.keys(version); + callback(null, Array.isArray(obj) && obj.length ? obj[0] : 'no version'); + }); + }); + } + Plugins.isInstalled = function(id, callback) { var pluginDir = path.join(__dirname, '../node_modules', id); @@ -725,7 +737,7 @@ var fs = require('fs'), async.waterfall([ function(next) { - fs.readFile(path.join(file, 'plugin.json'), next); + fs.readFile(path.join(file, 'package.json'), next); }, function(configJSON, next) { var config; @@ -737,13 +749,12 @@ var fs = require('fs'), return next(err, null); } - Plugins.isActive(config.id, function(err, active) { + Plugins.isActive(config.name, function(err, active) { if (err) { next(new Error('no-active-state')); } - delete config.library; - delete config.hooks; + config.active = active; config.installed = true; diff --git a/src/views/admin/extend/plugins.tpl b/src/views/admin/extend/plugins.tpl index 643a07b786..115eed1e08 100644 --- a/src/views/admin/extend/plugins.tpl +++ b/src/views/admin/extend/plugins.tpl @@ -18,6 +18,7 @@

{plugins.description}

+ Installed {plugins.version} | Latest {plugins.latest}

For more information: {plugins.url}