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
180 lines (144 loc) • 6.89 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeLocalVersion = removeLocalVersion;
exports.removeLocalVersionsForAllComponents = removeLocalVersionsForAllComponents;
exports.removeLocalVersionsForComponentsMatchedByWildcard = removeLocalVersionsForComponentsMatchedByWildcard;
function _bluebird() {
const data = require("bluebird");
_bluebird = function () {
return data;
};
return data;
}
function _logger() {
const data = _interopRequireDefault(require("../../logger/logger"));
_logger = function () {
return data;
};
return data;
}
function _generalError() {
const data = _interopRequireDefault(require("../../error/general-error"));
_generalError = function () {
return data;
};
return data;
}
function _componentsList() {
const data = _interopRequireDefault(require("../../consumer/component/components-list"));
_componentsList = function () {
return data;
};
return data;
}
/**
* If not specified version, remove all local versions.
*/
function removeLocalVersion(_x, _x2, _x3) {
return _removeLocalVersion.apply(this, arguments);
}
function _removeLocalVersion() {
_removeLocalVersion = (0, _bluebird().coroutine)(function* (scope, id, version, // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
force = false) {
const component = yield scope.getModelComponentIgnoreScope(id);
const localVersions = component.getLocalVersions();
const idStr = id.toString();
if (!localVersions.length) throw new (_generalError().default)(`unable to untag ${idStr}, the component is not staged`);
if (version && !component.hasVersion(version)) {
throw new (_generalError().default)(`unable to untag ${idStr}, the version ${version} does not exist`);
}
if (version && !localVersions.includes(version)) {
throw new (_generalError().default)(`unable to untag ${idStr}, the version ${version} was exported already`);
}
const versionsToRemove = version ? [version] : localVersions;
if (!force) {
const dependencyGraph = yield scope.getDependencyGraph();
versionsToRemove.forEach(versionToRemove => {
const idWithVersion = component.toBitId().changeVersion(versionToRemove);
const dependents = dependencyGraph.getImmediateDependentsPerId(idWithVersion);
if (dependents.length) {
throw new (_generalError().default)(`unable to untag ${idStr}, the version ${versionToRemove} has the following dependent(s) ${dependents.join(', ')}`);
}
});
}
scope.sources.removeComponentVersions(component, versionsToRemove);
return {
id,
versions: versionsToRemove,
component
};
});
return _removeLocalVersion.apply(this, arguments);
}
function removeLocalVersionsForAllComponents(_x4, _x5) {
return _removeLocalVersionsForAllComponents.apply(this, arguments);
}
function _removeLocalVersionsForAllComponents() {
_removeLocalVersionsForAllComponents = (0, _bluebird().coroutine)(function* (scope, version, // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
force = false) {
const componentsToUntag = yield getComponentsWithOptionToUntag(scope, version);
return removeLocalVersionsForMultipleComponents(componentsToUntag, version, force, scope);
});
return _removeLocalVersionsForAllComponents.apply(this, arguments);
}
function removeLocalVersionsForComponentsMatchedByWildcard(_x6, _x7) {
return _removeLocalVersionsForComponentsMatchedByWildcard.apply(this, arguments);
}
function _removeLocalVersionsForComponentsMatchedByWildcard() {
_removeLocalVersionsForComponentsMatchedByWildcard = (0, _bluebird().coroutine)(function* (scope, version, // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
force = false, idWithWildcard) {
const candidateComponents = yield getComponentsWithOptionToUntag(scope, version);
const componentsToUntag = idWithWildcard ? _componentsList().default.filterComponentsByWildcard(candidateComponents, idWithWildcard) : candidateComponents;
return removeLocalVersionsForMultipleComponents(componentsToUntag, version, force, scope);
});
return _removeLocalVersionsForComponentsMatchedByWildcard.apply(this, arguments);
}
function removeLocalVersionsForMultipleComponents(_x8, _x9, _x10, _x11) {
return _removeLocalVersionsForMultipleComponents.apply(this, arguments);
}
function _removeLocalVersionsForMultipleComponents() {
_removeLocalVersionsForMultipleComponents = (0, _bluebird().coroutine)(function* (componentsToUntag, version, // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
force, scope) {
if (!componentsToUntag.length) {
const versionOutput = version ? `${version} ` : '';
throw new (_generalError().default)(`no components found with version ${versionOutput}to untag on your workspace`);
} // if no version is given, there is risk of deleting dependencies version without their dependents.
if (!force && version) {
const dependencyGraph = yield scope.getDependencyGraph();
const candidateComponentsIds = componentsToUntag.map(component => {
const bitId = component.toBitId();
return bitId.changeVersion(version);
});
const candidateComponentsIdsStr = candidateComponentsIds.map(id => id.toString());
candidateComponentsIds.forEach(bitId => {
const dependents = dependencyGraph.getImmediateDependentsPerId(bitId); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
const dependentsNotCandidates = dependents.filter(dependent => !candidateComponentsIdsStr.includes(dependent));
if (dependentsNotCandidates.length) {
throw new (_generalError().default)( // $FlowFixMe
`unable to untag ${bitId}, the version ${version} has the following dependent(s) ${dependents.join(', ')}`);
}
});
}
_logger().default.debug(`found ${componentsToUntag.length} components to untag`);
return Promise.all(componentsToUntag.map(component => removeLocalVersion(scope, component.toBitId(), version, true)));
});
return _removeLocalVersionsForMultipleComponents.apply(this, arguments);
}
function getComponentsWithOptionToUntag(_x12, _x13) {
return _getComponentsWithOptionToUntag.apply(this, arguments);
}
function _getComponentsWithOptionToUntag() {
_getComponentsWithOptionToUntag = (0, _bluebird().coroutine)(function* (scope, version) {
const components = yield scope.list();
const candidateComponents = components.filter(component => {
const localVersions = component.getLocalVersions();
if (!localVersions.length) return false;
return version ? localVersions.includes(version) : true;
});
return candidateComponents;
});
return _getComponentsWithOptionToUntag.apply(this, arguments);
}
;