Files
vue-pult/server/update.js
sasha 3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00

72 lines
2.0 KiB
JavaScript

// ОБНОВЛЕНИЕ!!!
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();
});