manager/updatetools.js

122 lines
3.4 KiB
JavaScript
Raw Normal View History

2023-04-29 16:19:45 +00:00
const log = require("./sublog")
2023-04-29 17:03:19 +00:00
const { BrowserWindow, app, ipcMain } = require("electron")
2023-04-29 16:19:45 +00:00
const https = require('https');
const fs = require('fs');
2023-04-29 17:03:19 +00:00
const fse = require('fs-extra');
2023-04-29 16:19:45 +00:00
const BWin = BrowserWindow
const path = require("path")
const decompress = require('decompress');
module.exports.checkUpdate = () => {
log.update("Verification des mises a jour ... Processing !")
2023-04-29 17:03:19 +00:00
fetch("https://git.raphix.fr/subsonics/manager/raw/branch/main/package.json").catch(err => catchError(err)).then(resp => resp.json()).then(resp => checkUpdateProcessing(resp))
2023-04-29 16:19:45 +00:00
}
function checkUpdateProcessing(serverPackage) {
const clientPackage = require("./package")
if(serverPackage.version.replace(".", "") > clientPackage.version.replace(".", "")) {
log.update("Verification des mises a jour ... Finish !")
log.update("Mise a jour disponible ! Nouvelle version : " + serverPackage.version + " - Client : " + clientPackage.version + " - Git : " + serverPackage.version)
update()
} else {
log.update("Verification des mises a jour ... Finish !")
log.update("Cette version est la derniere version ! - Client : " + clientPackage.version + " - Git : " + serverPackage.version)
}
}
function update() {
const win = BWin.getFocusedWindow()
win.loadFile("templates/update/update.html")
2023-04-29 17:03:19 +00:00
ipcMain.on("close", () => {
app.quit()
})
log.update("Telechargement de la mise à jour ... Processing !")
2023-04-29 16:19:45 +00:00
if(fs.existsSync(__dirname + path.sep + "update.tar.gz")) {
fs.rmSync("update.tar.gz")
}
const updatePack = fs.createWriteStream(__dirname + path.sep + "update.tar.gz");
2023-04-29 17:03:19 +00:00
const request = https.get("https://git.raphix.fr/subsonics/manager/archive/main.tar.gz", function(response) {
response.pipe(updatePack);
2023-04-29 16:19:45 +00:00
// after download completed close filestream
updatePack.on("finish", () => {
updatePack.close();
2023-04-29 17:03:19 +00:00
log.update("Telechargement de la mise à jour ... Finish !")
2023-04-29 16:19:45 +00:00
install(__dirname + path.sep + "update.tar.gz")
});
2023-04-29 17:03:19 +00:00
updatePack.on("error", (err) => {
log.update("Erreur lors du telechargement de la mise à jour !")
updatePack.close();
console.log(err)
})
2023-04-29 16:19:45 +00:00
});
}
function install(filename) {
2023-04-29 17:03:19 +00:00
log.update("Extraction de la mise à jour ... Processing !")
decompress(filename, __dirname).then(files => {
log.update("Extraction de la mise à jour ... Finish !")
log.update("Installation de la mise à jour ... Processing !")
fse.copy(__dirname + path.sep + "manager", __dirname, { overwrite: true }, () => {
2023-04-29 17:36:06 +00:00
fs.rm(filename, () => {
fs.rm(__dirname + path.sep + "manager", { recursive: true, force: true }, (err) => {
if(err) {
console.log(err)
}
log.update("Installation de la mise à jour ... Finish !")
log.update("Rédémarrage de l'application.")
app.relaunch()
app.exit()
})
2023-04-29 17:29:33 +00:00
})
2023-04-29 17:03:19 +00:00
})
}).catch(err => catchError(err, true));
}
function catchError(err, inUp) {
log.update("Erreur lors de la verification des mises a jour !")
log.update(err)
if(inUp == true) {
win.webContents.send("error")
}
2023-04-29 16:19:45 +00:00
}