cortex
Version:
Cortex is an npm-like package manager for browsers.
64 lines (53 loc) • 1.69 kB
JavaScript
;
var wrapper = require('cortex-shrinkwrap');
var cortex_json = require('read-cortex-json');
var fs = require('fs');
var node_path = require('path');
var neuron = require('neuronjs');
var semver_helper = require('../util/semver');
exports.run = function (options, callback) {
var cwd = options.cwd;
var logger = this.logger;
var profile = this.profile;
var self = this;
var pr = options.prerelease || this.profile.get('prerelease');
cortex_json.read(cwd, function (err, pkg) {
if (err) {
return callback(err);
}
function done(err, shrinkwrap) {
if (err) {
return callback(err);
}
options['with-engines'] && self.add_engines(shrinkwrap);
var shrinkwrap_file = node_path.join(cwd, 'cortex-shrinkwrap.json');
fs.writeFile(shrinkwrap_file, JSON.stringify(shrinkwrap, null, 2), function (err) {
if (err) {
return callback({
code: 'FAIL_WRITE_SHRINKWRAP',
message: 'Fails to write cortex-shrinkwrap.json'
});
}
logger.info('{{cyan write}} to cortex-shrinkwrap.json');
callback(null);
});
}
pkg.version = semver_helper.add_prerelease(pkg.version, pr);
wrapper(pkg, node_path.join(options.cwd, 'neurons'), {
dev: false,
async: true,
stable_only: options['stable-only']
}, done)
.on('warn', function (message) {
logger.warn(message);
});
});
};
exports.add_engines = function (shrinkwrap) {
var engines = shrinkwrap.engines || (shrinkwrap.engines = {});
var version = neuron.version();
engines.neuron = {
'from': 'neuron@' + version,
'version': version
};
};