diff --git a/server/createWebApp.js b/server/createWebApp.js index 3f472ae..705f18c 100644 --- a/server/createWebApp.js +++ b/server/createWebApp.js @@ -4,20 +4,41 @@ const webApp = require('../dist/public.json'); const ZipReader = require('./core/ZipReader'); module.exports = async(config) => { + const verFile = `${config.publicDir}/version.txt`; const zipFile = `${config.tempDir}/public.zip`; - await fs.writeFile(zipFile, webApp.data, {encoding: 'base64'}); + if (await fs.pathExists(verFile)) { + const curPublicVersion = await fs.readFile(verFile, 'utf8'); + if (curPublicVersion == config.version) + return; + } - const zipReader = new ZipReader(); - await zipReader.open(zipFile); + //сохраним files + const filesDir = `${config.publicDir}/files`; + let tmpFilesDir = ''; + if (await fs.pathExists(filesDir)) { + tmpFilesDir = `${config.dataDir}/files`; + if (!await fs.pathExists(tmpFilesDir)) + await fs.move(filesDir, tmpFilesDir); + } await fs.remove(config.publicDir); + //извлекаем новый webApp + await fs.writeFile(zipFile, webApp.data, {encoding: 'base64'}); + const zipReader = new ZipReader(); + await zipReader.open(zipFile); + try { await zipReader.extractAllToDir(config.publicDir); } finally { await zipReader.close(); } + //восстановим files + if (tmpFilesDir) + await fs.move(tmpFilesDir, filesDir); + + await fs.writeFile(verFile, config.version); await fs.remove(zipFile); }; \ No newline at end of file