bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
255 lines (181 loc) • 6.26 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = installExtensions;
exports.isEnvironmentInstalled = isEnvironmentInstalled;
function _bluebird() {
const data = require("bluebird");
_bluebird = function () {
return data;
};
return data;
}
function pathLib() {
const data = _interopRequireWildcard(require("path"));
pathLib = function () {
return data;
};
return data;
}
function _ramda() {
const data = _interopRequireDefault(require("ramda"));
_ramda = function () {
return data;
};
return data;
}
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _pMapSeries() {
const data = _interopRequireDefault(require("p-map-series"));
_pMapSeries = function () {
return data;
};
return data;
}
function _exceptions() {
const data = require("../exceptions");
_exceptions = function () {
return data;
};
return data;
}
function _environment() {
const data = _interopRequireDefault(require("../../environment"));
_environment = function () {
return data;
};
return data;
}
function _logger() {
const data = _interopRequireDefault(require("../../logger/logger"));
_logger = function () {
return data;
};
return data;
}
function _componentResolver() {
const data = _interopRequireDefault(require("../../component-resolver"));
_componentResolver = function () {
return data;
};
return data;
}
function _analytics() {
const data = require("../../analytics/analytics");
_analytics = function () {
return data;
};
return data;
}
function _() {
const data = require("..");
_ = function () {
return data;
};
return data;
}
function _scopeRemotes() {
const data = require("../scope-remotes");
_scopeRemotes = function () {
return data;
};
return data;
}
const removeNils = _ramda().default.reject(_ramda().default.isNil);
function installExtensions({
ids,
dependentId,
scope,
verbose,
dontPrintEnvMsg
}) {
_logger().default.debug(`scope.installEnvironment, ids: ${ids.map(id => id.componentId).join(', ')}`);
_analytics().Analytics.addBreadCrumb('installEnvironment', `scope.installEnvironment, ids: ${_analytics().Analytics.hashData(ids)}`);
const componentsDir = scope.getComponentsPath();
const isolateOpts = {
writeBitDependencies: false,
installNpmPackages: true,
writePackageJson: true,
writeDists: true,
writeConfig: false,
installPeerDependencies: true,
override: false,
installProdPackagesOnly: true,
verbose,
silentPackageManagerResult: true
};
const idsWithoutNils = removeNils(ids);
const predicate = id => id.componentId.toString(); // TODO: should be moved to BitId class
const uniqIds = _ramda().default.uniqBy(predicate)(idsWithoutNils);
const nonExistingEnvsIds = uniqIds.filter(id => {
return !isEnvironmentInstalled(scope, id.componentId);
});
if (!nonExistingEnvsIds.length) {
_logger().default.debug('scope.installEnvironment, all environment were successfully loaded, nothing to install');
_analytics().Analytics.addBreadCrumb('installEnvironment', 'scope.installEnvironment, all environment were successfully loaded, nothing to install');
return Promise.resolve([]);
}
const importEnv = /*#__PURE__*/function () {
var _ref = (0, _bluebird().coroutine)(function* (id) {
let concreteId = id.componentId;
if (id.componentId.getVersion().latest) {
const concreteIds = yield (0, _scopeRemotes().fetchRemoteVersions)(scope, [id.componentId]);
concreteId = concreteIds[0];
}
_logger().default.debug(`scope.installEnvironment.importEnv, id: ${concreteId.toString()}`);
const dir = pathLib().join(componentsDir, _().Scope.getComponentRelativePath(concreteId));
const env = new (_environment().default)(scope, dir); // Destroying environment to make sure there is no left over
yield env.destroyIfExist();
yield env.create();
try {
const isolatedComponent = yield env.isolateComponent(concreteId, isolateOpts);
if (!dontPrintEnvMsg) {
// eslint-disable-next-line no-console
_logger().default.console(_chalk().default.bold.green(`successfully installed the ${concreteId.toString()} ${id.type}`), 'debug');
}
return isolatedComponent;
} catch (e) {
if (e instanceof _exceptions().ComponentNotFound) {
e.dependentId = dependentId ? dependentId.toString() : null;
}
throw e;
}
});
return function importEnv(_x) {
return _ref.apply(this, arguments);
};
}();
return (0, _pMapSeries().default)(nonExistingEnvsIds, importEnv);
}
/**
* sync method that loads the environment/(path to environment component)
*/
function isEnvironmentInstalled(scope, bitId) {
_logger().default.debug(`scope.isEnvironmentInstalled, id: ${bitId.toString()}`);
_analytics().Analytics.addBreadCrumb('isEnvironmentInstalled', `scope.isEnvironmentInstalled, id: ${_analytics().Analytics.hashData(bitId.toString())}`);
if (!bitId) throw new Error('scope.isEnvironmentInstalled a required argument "bitId" is missing');
const notFound = () => {
_logger().default.debug(`Unable to find an env component ${bitId.toString()}`);
_analytics().Analytics.addBreadCrumb('isEnvironmentInstalled', `Unable to find an env component ${_analytics().Analytics.hashData(bitId.toString())}`);
return false;
};
let envPath;
try {
envPath = (0, _componentResolver().default)(bitId.toString(), null, scope.getPath());
} catch (err) {
return notFound();
}
if (!_environment().default.isEnvironmentInstalled(envPath)) return notFound();
_logger().default.debug(`found an environment file at ${envPath}`);
_analytics().Analytics.addBreadCrumb('isEnvironmentInstalled', `found an environment file at ${_analytics().Analytics.hashData(envPath)}`);
return true;
}
;