brackets-npm-registry
Version:
Install your extensions into Brackets using npm
130 lines (108 loc) • 4.83 kB
JavaScript
/*eslint no-console:0,no-undefined:0,no-process-env:0*/
(function () {
'use strict';
var domainName = 'brackets-npm-registry-domain';
var buffspawn = require('buffered-spawn');
var nodeEnsure = require('./node-ensure');
var _require = require('bluebird');
var promisifyAll = _require.promisifyAll;
var fs = promisifyAll(require('fs-extra'));
var path = require('path');
var utils = require('./utils');
var domainManager = null;
var buildRegistry = function buildRegistry(callback, progressCallback) {
nodeEnsure().then(function (nodePath) {
var args = ['registry-builder.js'];
return buffspawn(nodePath, args, {
cwd: __dirname,
env: utils.processEnvWithPath(path.dirname(nodePath))
}).progress(function (buff) {
if (progressCallback && buff.type === 'stderr') {
progressCallback(buff.toString());
}
}).spread(function (stdout) {
callback(undefined, stdout);
});
})['catch'](function (err) {
return callback(err);
});
};
var installExtension = function installExtension(targetPath, name, callback, progressCallback) {
nodeEnsure().then(function (nodePath) {
// brackets currently don't have progress callback
// blocked by https://github.com/adobe/brackets/pull/10761
var progressBuffer = [];
if (!progressCallback) {
progressCallback = function (str) {
return progressBuffer.push(str);
};
}
var finishWithBuffer = function finishWithBuffer(stdout) {
if (progressBuffer.length > 0) {
stdout = progressBuffer.concat(stdout).join('\n');
}
callback(undefined, stdout);
};
// self-update is special, we don't want to go this way for every extension
// extensionInstaller takes a lot of node memory by loading npm
// so we go around this by spawning it as a separate process
// but this doesn't work well when self-updating
if (name === 'brackets-npm-registry') {
return require('./extension-installer').install(targetPath, name, {
output: function output() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return progressCallback(args.join(' '));
},
progress: function progress() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return progressCallback(args.join(' '));
}
}).then(function (stdout) {
return finishWithBuffer(stdout);
})['catch'](function (err) {
return callback(err);
});
}
return buffspawn(nodePath, ['extension-installer.js', targetPath, name], {
cwd: __dirname,
env: utils.processEnvWithPath(path.dirname(nodePath))
}).progress(function (buff) {
if (buff.type === 'stderr') {
progressCallback(buff.toString());
}
}).spread(function (stdout) {
return finishWithBuffer(stdout);
});
})['catch'](function (err) {
return callback(err.stack ? err.stack : err.toString());
});
};
var removeExtension = function removeExtension(targetPath, name, callback, progressCallback) {
if (progressCallback) {
progressCallback('removing ' + name + ' from ' + targetPath);
}
fs.removeAsync(path.resolve(targetPath, name)).then(function () {
callback(undefined, 'successfully removed ' + name);
})['catch'](function (err) {
callback(err);
});
};
exports.init = function (_domainManager) {
domainManager = _domainManager;
if (!domainManager.hasDomain(domainName)) {
domainManager.registerDomain(domainName, { major: 0, minor: 1 });
}
domainManager.registerCommand(domainName, 'buildRegistry', // command name
buildRegistry, // handler function
true, // is async
'get a list of extensions from npm', // description
[{ name: 'extensions', type: 'array' }]);
domainManager.registerCommand(domainName, 'installExtension', installExtension, true, 'installs an extension into a given path', [{ name: 'targetPath', type: 'string' }, { name: 'extensionName', type: 'string' }, { name: 'installLog', type: 'string' }]);
domainManager.registerCommand(domainName, 'removeExtension', removeExtension, true, 'removes an extension from a given path', [{ name: 'targetPath', type: 'string' }, { name: 'extensionName', type: 'string' }, { name: 'installLog', type: 'string' }]);
};
})();
//# sourceMappingURL=C:\Users\Zaggi\AppData\Roaming\Brackets-Electron\extensions\user\brackets-npm-registry\dist//node/brackets-node-domain.js.map