gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
181 lines • 13.4 kB
JavaScript
;
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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