diff options
Diffstat (limited to 'lib/plugins/resolveVersion.js')
-rw-r--r-- | lib/plugins/resolveVersion.js | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/lib/plugins/resolveVersion.js b/lib/plugins/resolveVersion.js deleted file mode 100644 index 61aef8d..0000000 --- a/lib/plugins/resolveVersion.js +++ /dev/null @@ -1,71 +0,0 @@ -var npm = require('npm'); -var semver = require('semver'); -var Immutable = require('immutable'); - -var Promise = require('../utils/promise'); -var Plugin = require('../models/plugin'); -var gitbook = require('../gitbook'); - -var npmIsReady; - -/** - Initialize and prepare NPM - - @return {Promise} -*/ -function initNPM() { - if (npmIsReady) return npmIsReady; - - npmIsReady = Promise.nfcall(npm.load, { - silent: true, - loglevel: 'silent' - }); - - return npmIsReady; -} - -/** - Resolve a plugin dependency to a version - - @param {PluginDependency} plugin - @return {Promise<String>} -*/ -function resolveVersion(plugin) { - var npmId = Plugin.nameToNpmID(plugin.getName()); - var requiredVersion = plugin.getVersion(); - - if (plugin.isGitDependency()) { - return Promise.resolve(requiredVersion); - } - - return initNPM() - .then(function() { - return Promise.nfcall(npm.commands.view, [npmId + '@' + requiredVersion, 'engines'], true); - }) - .then(function(versions) { - versions = Immutable.Map(versions).entrySeq(); - - var result = versions - .map(function(entry) { - return { - version: entry[0], - gitbook: (entry[1].engines || {}).gitbook - }; - }) - .filter(function(v) { - return v.gitbook && gitbook.satisfies(v.gitbook); - }) - .sort(function(v1, v2) { - return semver.lt(v1.version, v2.version)? 1 : -1; - }) - .get(0); - - if (!result) { - return undefined; - } else { - return result.version; - } - }); -} - -module.exports = resolveVersion; |