1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const fs = require('fs-extra');
- 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`;
- if (await fs.pathExists(verFile)) {
- const curPublicVersion = await fs.readFile(verFile, 'utf8');
- if (curPublicVersion == config.version)
- return;
- }
- //сохраним 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);
- };
|