UNPKG

brackets-npm-registry

Version:

Install your extensions into Brackets using npm

130 lines (108 loc) 4.83 kB
/*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