const exec = require('child-process-promise').exec; const fsPromises = require('fs').promises; const path = require('path') module.exports = function (docxFile, image) { return new Promise((resolve, reject) => { let zipName = docxFile.slice(0, -5) + '.zip' let filePath = path.join(__dirname + '/../public/files') exec('mkdir -p word/media') .then(function (result) { return Promise.all([ fsPromises.copyFile(path.join(__dirname + '/../public/images/resized/' + image), path.join(__dirname + '/../public/files/word/media/image2.png')), fsPromises.rename(path.join(__dirname + '/../public/files/' + docxFile), path.join(__dirname + '/../public/files/' + zipName)) ]) }).then((result) => { return exec(`zip -d ${zipName} ./word/media/image2.png`, { cwd: filePath }) }).then((result) => { return exec(`zip -u ${zipName} ./word/media/image2.png`, { cwd: filePath }) }).then((result) => { return fsPromises.rename(path.join(__dirname + '/../public/files/' + zipName), path.join(__dirname + '/../public/files/' + docxFile)) }).then(() => { resolve(docxFile) }) .catch(function (err) { reject({ eCode: 500, eText: err }) }); }) }