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
192 lines (145 loc) • 4.88 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.DIAGNOSIS_NAME = void 0;
function _bluebird() {
const data = require("bluebird");
_bluebird = function () {
return data;
};
return data;
}
function _defineProperty2() {
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
_defineProperty2 = function () {
return data;
};
return data;
}
function path() {
const data = _interopRequireWildcard(require("path"));
path = function () {
return data;
};
return data;
}
function _fsExtra() {
const data = _interopRequireDefault(require("fs-extra"));
_fsExtra = function () {
return data;
};
return data;
}
function _glob() {
const data = _interopRequireDefault(require("glob"));
_glob = function () {
return data;
};
return data;
}
function _ramda() {
const data = _interopRequireDefault(require("ramda"));
_ramda = function () {
return data;
};
return data;
}
function _diagnosis() {
const data = _interopRequireDefault(require("../diagnosis"));
_diagnosis = function () {
return data;
};
return data;
}
function _consumer() {
const data = require("../../consumer");
_consumer = function () {
return data;
};
return data;
}
function _scope() {
const data = require("../../scope");
_scope = function () {
return data;
};
return data;
}
const DIAGNOSIS_NAME = 'check environment symlinks';
exports.DIAGNOSIS_NAME = DIAGNOSIS_NAME;
class BrokenSymlinkFiles extends _diagnosis().default {
constructor(...args) {
super(...args);
(0, _defineProperty2().default)(this, "name", DIAGNOSIS_NAME);
(0, _defineProperty2().default)(this, "description", 'validate generated symlinks for workspace environments');
(0, _defineProperty2().default)(this, "category", 'local environments');
}
_formatSymptoms(bareResult) {
if (!bareResult.data) throw new Error('BrokenSymlinkFiles, bareResult.data is missing'); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
const toString = bareResult.data.brokenSymlinks.map(brokenSymlink => `symlink path: "${brokenSymlink.symlinkPath}", broken link: "${brokenSymlink.brokenPath}"`).join('\n');
return `the following symlinks points to non-existing paths\n${toString}`;
}
_formatManualTreat(bareResult) {
if (!bareResult.data) throw new Error('BrokenSymlinkFiles, bareResult.data is missing'); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
const toString = _ramda().default.uniq(bareResult.data.brokenSymlinks.map(b => b.pathToDelete)).join('\n');
return `please delete the following paths:\n${toString}`;
}
_runExamine() {
var _this = this;
return (0, _bluebird().coroutine)(function* () {
const consumer = yield (0, _consumer().loadConsumer)();
const envComponentsDir = path().join(consumer.scope.getPath(), _scope().Scope.getComponentsRelativePath());
const potentialSymlinks = _glob().default.sync('**/node_modules/@bit/**', {
cwd: envComponentsDir
});
const potentialSymlinksAbs = potentialSymlinks.map(p => path().join(envComponentsDir, p));
const brokenSymlinks = [];
const results = potentialSymlinksAbs.map( /*#__PURE__*/function () {
var _ref = (0, _bluebird().coroutine)(function* (potentialSymlink) {
const link = yield _this._getLinkIfExist(potentialSymlink);
if (!link) return;
const exists = yield _fsExtra().default.pathExists(link);
if (exists) return;
const brokenSymlink = {
symlinkPath: potentialSymlink,
brokenPath: link,
pathToDelete: _this._getPathToDelete(potentialSymlink)
};
brokenSymlinks.push(brokenSymlink);
});
return function (_x) {
return _ref.apply(this, arguments);
};
}());
yield Promise.all(results);
return {
valid: brokenSymlinks.length === 0,
data: {
brokenSymlinks
}
};
})();
}
_getLinkIfExist(symlinkPath) {
return (0, _bluebird().coroutine)(function* () {
try {
const link = yield _fsExtra().default.readlink(symlinkPath);
return link;
} catch (err) {
// probably not a symlink
return null;
}
})();
}
/**
* deleting the environment directory causes Bit to reinstall it next time
*/
_getPathToDelete(symlinkPath) {
const envDirectory = symlinkPath.split(path().join('node_modules', '@bit'))[0];
return envDirectory.slice(0, -1); // remove the last slash
}
}
exports.default = BrokenSymlinkFiles;
;