// ОБНОВЛЕНИЕ!!! const fs = require('fs'); const util = require('util'); const runCommand = util.promisify(require('child_process').exec); let TEMP_DIR="temp_package"; let PACKAGE_NAME="@pult/pult-beta"; let VER=1,VERNPM=2; let update= async () => { if ( fs.existsSync(TEMP_DIR)) { // Если существует папка TEMP_DIR >>> console.log('Предыдущее обновление завершено не коректно'); if ( fs.existsSync(TEMP_DIR+"/ok")) { // Если существует файл ok console.log('было скачено'); await runCommand(`cd ${TEMP_DIR} tar -xzf pult*.tgz --strip-components=1 -C .. cd .. rm -rf ${TEMP_DIR} npm update `); process.exit(); } else { console.log('не скачено'); await runCommand(`rm -rf ${TEMP_DIR}`); } } try { let dan= JSON.parse(fs.readFileSync('package.json', "utf8")); PACKAGE_NAME=dan.name; VER=dan.version; } catch (error) {} VERNPM=(await runCommand("npm view "+PACKAGE_NAME+" version").catch(e=>{process.exit()})).stdout.slice(0, -1); console.log(PACKAGE_NAME, "["+VER+"]", "["+VERNPM+"]"); if (VER==VERNPM) { console.log('Обновление не требуется'); process.exit(); } await runCommand(`mkdir ${TEMP_DIR} cd ${TEMP_DIR} npm pack ${PACKAGE_NAME} touch ok tar -xzf pult*.tgz --strip-components=1 -C .. cd .. rm -rf ${TEMP_DIR} npm update `); console.log('Обновление завершено на версию '+VERNPM); process.exit(); } update(); setTimeout(()=>{ process.exit(); }, 300000); // 5 минут таймаут process.on("SIGINT", () => { // прослушиваем прерывание работы программы (ctrl-c) process.exit(); });