UNPKG

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

208 lines (168 loc) 5.91 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _bluebird() { const data = require("bluebird"); _bluebird = function () { return data; }; return data; } function _ramda() { const data = _interopRequireDefault(require("ramda")); _ramda = function () { return data; }; return data; } function _utils() { const data = require("../../../utils"); _utils = function () { return data; }; return data; } function _tmp() { const data = _interopRequireDefault(require("../../../scope/repositories/tmp")); _tmp = function () { return data; }; return data; } function _mergeFiles() { const data = _interopRequireDefault(require("../../../utils/merge-files")); _mergeFiles = function () { return data; }; return data; } function _generalError() { const data = _interopRequireDefault(require("../../../error/general-error")); _generalError = function () { return data; }; return data; } var _default = /*#__PURE__*/function () { var _twoWayMergeVersions = (0, _bluebird().coroutine)(function* ({ consumer, otherComponent, otherVersion, currentComponent, currentVersion }) { const otherFiles = otherComponent.files; const currentFiles = currentComponent.files; const results = { addFiles: [], modifiedFiles: [], unModifiedFiles: [], // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! overrideFiles: [], hasConflicts: false }; const getFileResult = (otherFile, currentFile) => { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const filePath = (0, _utils().pathNormalizeToLinux)(otherFile.relative); if (!currentFile) { results.addFiles.push({ filePath, otherFile }); return; } // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const otherFileHash = (0, _utils().sha1)(otherFile.contents); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const currentFileHash = (0, _utils().sha1)(currentFile.contents); if (otherFileHash === currentFileHash) { results.unModifiedFiles.push({ filePath, currentFile }); return; } // it was changed in both, there is a chance for conflict // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! currentFile.version = currentVersion; // $FlowFixMe it's a hack to pass the data, version is not a valid attribute. // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! otherFile.version = otherVersion; results.modifiedFiles.push({ filePath, currentFile, otherFile, output: null, conflict: null }); }; otherFiles.forEach(otherFile => { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const currentFile = currentFiles.find(file => file.relative === otherFile.relative); getFileResult(otherFile, currentFile); }); if (_ramda().default.isEmpty(results.modifiedFiles)) return results; const conflictResults = yield getMergeResults(consumer, results.modifiedFiles); conflictResults.forEach(conflictResult => { const modifiedFile = results.modifiedFiles.find(file => file.filePath === conflictResult.filePath); if (!modifiedFile) throw new (_generalError().default)(`unable to find ${conflictResult.filePath} in modified files array`); modifiedFile.output = conflictResult.output; modifiedFile.conflict = conflictResult.conflict; if (conflictResult.conflict) results.hasConflicts = true; }); return results; }); function twoWayMergeVersions(_x) { return _twoWayMergeVersions.apply(this, arguments); } return twoWayMergeVersions; }(); exports.default = _default; function getMergeResults(_x2, _x3) { return _getMergeResults.apply(this, arguments); } function _getMergeResults() { _getMergeResults = (0, _bluebird().coroutine)(function* (consumer, // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! modifiedFiles) { const tmp = new (_tmp().default)(consumer.scope); const conflictResultsP = modifiedFiles.map( /*#__PURE__*/function () { var _ref = (0, _bluebird().coroutine)(function* (modifiedFile) { const currentFilePathP = tmp.save(modifiedFile.currentFile.contents); const writeFile = /*#__PURE__*/function () { var _ref2 = (0, _bluebird().coroutine)(function* (file) { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! return tmp.save(file.contents); }); return function writeFile(_x5) { return _ref2.apply(this, arguments); }; }(); const baseFilePathP = tmp.save(''); const otherFilePathP = writeFile(modifiedFile.otherFile); const [otherFilePath, baseFilePath, currentFilePath] = yield Promise.all([otherFilePathP, baseFilePathP, currentFilePathP]); const mergeFilesParams = { filePath: modifiedFile.filePath, currentFile: { label: modifiedFile.currentFile.version, path: currentFilePath }, baseFile: { path: baseFilePath }, otherFile: { label: modifiedFile.otherFile.version, path: otherFilePath } }; return (0, _mergeFiles().default)(mergeFilesParams); }); return function (_x4) { return _ref.apply(this, arguments); }; }()); return Promise.all(conflictResultsP); }); return _getMergeResults.apply(this, arguments); }