UNPKG

brackets-npm-registry

Version:

Install your extensions into Brackets using npm

117 lines (101 loc) 4.74 kB
/*eslint strict:0, no-console:0*/ 'use strict'; // https://nodejs.org/api/modules.html#modules_accessing_the_main_module var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })(); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } var Promise = require('bluebird'); var exec = require('child_process').exec; var runDirectly = require.main === module; var npm = require('npm'); var _require = require('bluebird'); var all = _require.all; var fromNode = _require.fromNode; var promisify = _require.promisify; var fs = require('fs-extra'); var path = require('path'); var rimraf = promisify(require('rimraf')); var defaultLogger = { output: function output() { return console.log.apply(console, arguments); }, progress: function progress() { return console.error.apply(console, arguments); } }; function execCmd(cmd) { return new Promise(function (resolve) { exec(cmd, function (err, stdout, stderr) { if (err || stderr) { return resolve('err: ' + (err || stderr)); } return resolve(stdout.trim()); }); }); } function install(targetPath, npmPackageName, loggers) { if (runDirectly) { loggers = null; } var npmInstallFolder = path.resolve(targetPath, 'node_modules', npmPackageName); var finalInstallFolder = path.resolve(targetPath, npmPackageName); var logOutput = loggers ? loggers.output : defaultLogger.output; var logProgress = loggers ? loggers.progress : defaultLogger.progress; logProgress('using node ' + process.version + ', npm ' + npm.version); return Promise.all([execCmd('node --version'), execCmd('npm --version')]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2); var nodeVersion = _ref2[0]; var npmVersion = _ref2[1]; logProgress('node in path version ' + nodeVersion + ', npm in path version ' + npmVersion); logProgress('loading npm'); return fromNode(npm.load.bind(npm)); }).then(function () { // npm is loaded, we can start the installation logProgress('executing npm install ' + targetPath + ' ' + npmPackageName); return fromNode(npm.commands.install.bind(npm.commands, targetPath, npmPackageName)); }).then(function () { logProgress('installation successful into directory:\n', npmInstallFolder); logProgress('ensuring the target directory exists:\n', finalInstallFolder); return fromNode(fs.ensureDir.bind(fs, finalInstallFolder)); }).then(function () { // final directory is there, read its contents return fromNode(fs.readdir.bind(fs, finalInstallFolder)); }).then(function (dirContents) { logProgress('clearing the directory:\n', finalInstallFolder); return all(dirContents.map(function (entry) { if (entry === '.git') { return null; } return rimraf(path.resolve(finalInstallFolder, entry)); }).filter(function (x) { return !!x; })); }).then(function () { // read contents of installed directory return fromNode(fs.readdir.bind(fs, npmInstallFolder)); }).then(function (dirContents) { logProgress('moving files from:\n', npmInstallFolder, '\ninto:\n', finalInstallFolder); return all(dirContents.map(function (entry) { return fromNode(fs.move.bind(fs, path.resolve(npmInstallFolder, entry), path.resolve(finalInstallFolder, entry))); })); }).then(function () { var msg = 'successfully installed ' + npmPackageName; if (runDirectly) { logOutput(msg); } return msg; })['catch'](function (err) { if (runDirectly) { logProgress(err); } throw err; })['finally'](function () { // all done, now just remove the node_modules temp directory return rimraf(path.resolve(targetPath, 'node_modules')); }); } if (runDirectly) { install.apply(undefined, _toConsumableArray(process.argv.slice(2))); } else { exports.install = install; } //# sourceMappingURL=C:\Users\Zaggi\AppData\Roaming\Brackets-Electron\extensions\user\brackets-npm-registry\dist//node/extension-installer.js.map