let tempAssets = (files) => { let folder = `${tempdir()}/${shortid.generate()}`; mkdir('-p', folder); files.forEach((file, index) => fs.writeFileSync(`${folder}/${index + 1}`, file)); // prepared an empty file for revert fs.writeFileSync(`${folder}/0`, ''); return folder; };
let patch = jsdiff.createPatch(filename, oldStr, newStr); let reversePatch = jsdiff.createPatch(filename, newStr, oldStr); return {patch: patch, reverse_patch: reversePatch}; }, /* baseContent: it's old content patch: generate from old to new content */ applyPatch(baseContent, patch) { return jsdiff.applyPatch(baseContent, jsdiff.parsePatch(patch)); }, merge(latestContent, baseContent, modifiedContent) { let folder = `${(new Date()).getTime()}`; folder = `${tempdir()}/${folder}`; mkdir('-p', folder); fs.writeFileSync(`${folder}/latest`, latestContent); fs.writeFileSync(`${folder}/original`, baseContent); fs.writeFileSync(`${folder}/modified`, modifiedContent); cd(folder); let result = exec("diff3 -m latest original modified", { silent: true }); cd('~'); rm('-rf', folder); return { text: result.stdout, error: result.stderr, exitStatus: result.code };