UNPKG

gamelet-cli

Version:

Download project from code.gamelet.com, edit/test in vscode and sync back to server.

181 lines 13.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSourceMerged = exports.sourceMerge = void 0; const file_1 = require("../utils/file"); const node_diff3_1 = require("node-diff3"); /** * file local base * 1. o o o diff3 * 2. o o x diff2 * 3. o x o use file if file != base * 4. x o o del local if local == base * 5. o x x use file * 6. x o x (do nothing) * 7. x x o (do nothing) * 8. x x x (do nothing) * */ const sourceMerge = function (filename, remoteFile, baseFile, folder) { let localFilepath = `${folder}/${filename}`; // 4. if (remoteFile === null && (0, file_1.fileExists)(localFilepath) && baseFile !== null) { return (0, file_1.getFileString)(localFilepath) .then(content => { if (content == baseFile) { console.log(`Source deleted: ${filename}`); return (0, file_1.unlink)(localFilepath); } else { return Promise.resolve(true); } }) .then(() => { return { code: 4, name: 'deleted', filename: filename, }; }); } // 3. if (remoteFile !== null && !(0, file_1.fileExists)(localFilepath) && baseFile !== null) { if (remoteFile != baseFile) { console.log(`Source created: ${filename}`); return (0, file_1.saveData)(localFilepath, remoteFile) .then(() => { return { code: 3, name: 'added', filename: filename, }; }); } else { return Promise.resolve({ code: 3, name: '', filename: filename, }); } } // 5. if (remoteFile !== null && !(0, file_1.fileExists)(localFilepath) && baseFile === null) { return (0, file_1.saveData)(localFilepath, remoteFile) .then(() => { return { code: 5, name: 'added', filename: filename, }; }); } if (remoteFile !== null && (0, file_1.fileExists)(localFilepath)) { return (0, file_1.getFileString)(localFilepath) .then(localContent => { let remote = remoteFile.split("\n"); let local = localContent.split("\n"); let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/)); if (conflictLine != -1) { return Promise.reject((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`)); } // 1. 2, if (baseFile == remoteFile) { return { code: 1, name: '', filename: filename, }; } let base = baseFile ? baseFile.split("\n") : []; if (!isSourceMergable(filename)) { // encoded content if (baseFile == localContent) { return (0, file_1.saveData)(localFilepath, remoteFile) .then(() => { console.log(`Source overwritten with remote: ${filename}`); return { code: 1, name: 'merged', filename: filename, }; }); } else if (baseFile == remoteFile) { return { code: 1, name: 'merged', filename: filename, }; } else { return (0, file_1.saveData)(localFilepath, remoteFile) .then(() => { console.log(`Source overwritten with remote: ${filename}`); return { code: 1, name: 'merged', filename: filename, }; }); } } let merge = (0, node_diff3_1.mergeDiff3)(local, base, remote, { label: { a: 'local', o: 'base', b: 'remote', }, excludeFalseConflicts: true }); let content = merge.result.join("\n"); return (0, file_1.saveData)(localFilepath, content) .then(() => { if (merge.conflict) { conflictLine = merge.result.findIndex(line => line.match(/^\s*(<<<|>>>)/)); console.error((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Merge conflict required:`)); return { code: 1, name: 'conflict', filename: filename, }; } else { console.log(`Source merged: ${filename}`); return { code: 1, name: 'merged', filename: filename, }; } }); }); } else { return Promise.resolve({ code: 6, name: '', filename: filename, }); } }; exports.sourceMerge = sourceMerge; function isSourceMergable(filename) { return !filename.match(/(\.events|\.twmap|events\.schema\.json)$/); } const isSourceMerged = function (filename, remoteFile, baseFile, folder) { let localFilepath = `${folder}/${filename}`; if (remoteFile != baseFile) { return Promise.resolve(false); } if ((0, file_1.fileExists)(localFilepath)) { return (0, file_1.getFileString)(localFilepath) .then(localContent => { let local = localContent.split("\n"); let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/)); if (conflictLine != -1) { return Promise.reject((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`)); } else { return Promise.resolve(true); } }); } else { return Promise.resolve(true); } }; exports.isSourceMerged = isSourceMerged; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dhbWVsZXQvbWVyZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3RjtBQUN4RiwyQ0FBd0M7QUFReEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxNQUFNLFdBQVcsR0FBRyxVQUFVLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU07SUFDdkUsSUFBSSxhQUFhLEdBQUcsR0FBRyxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7SUFFNUMsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxJQUFBLGlCQUFVLEVBQUMsYUFBYSxDQUFDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE9BQU8sSUFBQSxvQkFBYSxFQUFDLGFBQWEsQ0FBQzthQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQkFDMUMsT0FBTyxJQUFBLGFBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQTtZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTztnQkFDSCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsUUFBUTthQUNyQixDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUEsaUJBQVUsRUFBQyxhQUFhLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFF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