aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2021-10-21 12:10:50 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2021-10-21 12:10:50 +0200
commita975479fc3eaa0fc89341603bffb0224bed1be3d (patch)
treecc1fb0f5260889fea379d30666c11af5bcd14b83
parent12b695fdc5389bc6a7d9c1e22be15ed1247c9522 (diff)
downloadLuxcena-Neo-a975479fc3eaa0fc89341603bffb0224bed1be3d.tar.gz
Luxcena-Neo-a975479fc3eaa0fc89341603bffb0224bed1be3d.zip
:hammer: Make version checker check the actual git status instead of config file for branch
-rw-r--r--src/SelfUpdater/index.js140
-rw-r--r--src/SocketIO/index.js13
-rw-r--r--src/UserData/index.js1
3 files changed, 77 insertions, 77 deletions
diff --git a/src/SelfUpdater/index.js b/src/SelfUpdater/index.js
index 84b0ee3..441ec6a 100644
--- a/src/SelfUpdater/index.js
+++ b/src/SelfUpdater/index.js
@@ -35,6 +35,41 @@ function createUniqueDir(path, prefix) {
}
}
+/**
+ * Spawn a command, and return a promise which resolves/rejects when that
+ * command ends.
+ */
+function promiseSpawn(cmd, args) {
+ return new Promise(function(resolve, reject) {
+ let child = spawn(cmd, args);
+
+ let stdout = "";
+ let stderr = "";
+
+ child.on('exit', (code, sig) => {
+ if (code == 0) {
+ resolve({
+ code: code,
+ out: stdout,
+ err: stderr
+ });
+ } else {
+ reject({
+ code: code,
+ out: stdout,
+ err: stderr
+ });
+ }
+ });
+ child.stdout.on('data', data => {
+ stdout += data.toString();
+ });
+ child.stderr.on('data', data => {
+ stderr += data.toString();
+ });
+ });
+}
+
class Updater {
constructor() {
@@ -156,36 +191,9 @@ class Updater {
/**
* Spawn a new command, return a promise.
*/
- run(cmd, opts) {
+ async run(cmd, opts) {
this.setCommand(`${cmd} ` + opts.join(" "));
- return new Promise(function(resolve, reject) {
- let child = spawn(cmd, opts);
-
- let stdout = "";
- let stderr = "";
-
- child.on('exit', (code, sig) => {
- if (code == 0) {
- resolve({
- code: code,
- out: stdout,
- err: stderr
- });
- } else {
- reject({
- code: code,
- out: stdout,
- err: stderr
- });
- }
- });
- child.stdout.on('data', data => {
- stdout += data.toString();
- });
- child.stderr.on('data', data => {
- stderr += data.toString();
- });
- });
+ await promiseSpawn(cmd, opts);
}
/**
@@ -245,64 +253,56 @@ class Updater {
}
-class VersionChecker {
+class SelfUpdater {
constructor() {
- this.CPackageJson = JSON.parse(fs.readFileSync(__appdir + "/package.json"));
- this.version = this.CPackageJson["version"];
- this.repoLink = this.CPackageJson["repository"]["url"];
-
- this.checkFrequency = neoModules.userData.config.SelfUpdater.checkVersionInterval * 86400000; // Takes in days.
- this.repoBranch = neoModules.userData.config.SelfUpdater.branch;
-
- this.remotePackageJSON = "https://raw.githubusercontent.com/JakobST1n/Luxcena-Neo/" + this.repoBranch + "/package.json";
-
+ this.branch;
+ this.repoUrl;
+ this.localPackageJson;
+ this.remotePackageJSON
+ this.localVersionNumber;
+ this.remoteVersionNumber;
this.newVersion = false;
- this.newestVersion = this.version;
- this.checkVersion(this.remotePackageJSON);
+ this.checkVersion(this.remotePackageJSON);
this.updateChecker = setInterval(() => {
- let newVersion = this.checkVersion(this.remotePackageJSON);
- }, this.checkFrequency);
+ this.checkVersion();
+ }, neoModules.userData.config.SelfUpdater.checkVersionInterval * 86400000);
this.updater = new Updater();
}
- checkVersion() {
- request.get(this.remotePackageJSON, (error, response, body) => {
- if (!error && response.statusCode === 200) {
- let remotePackageJSON = JSON.parse(body);
- this.newestVersion = remotePackageJSON["version"];
- if (this.newestVersion != this.version) {
- logger.notice("A new version is available on \"" + this.repoBranch + "\" (v" + this.version + ")");
- this.newVersion = true;
+ async checkVersion() {
+ this.localPackageJson = JSON.parse(fs.readFileSync(__appdir + "/package.json"));
+ this.localVersionNumber = this.localPackageJson["version"];
+ this.branch = (await promiseSpawn(`git`, ["-C", __appdir, "rev-parse", "--abbrev-ref", "HEAD"])).out.replace("\n","");
+ request.get(
+ "https://raw.githubusercontent.com/JakobST1n/Luxcena-Neo/" + this.branch + "/package.json",
+ (error, response, body) => {
+ if (!error && (response.statusCode === 200)) {
+ this.remotePackageJSON = JSON.parse(body);
+ this.remoteVersionNumber = this.remotePackageJSON["version"];
+ if (this.localVersionNumber != this.remoteVersionNumber) {
+ logger.notice("A new version is available on \"" + this.repoBranch + "\" (v" + this.version + ")");
+ this.newVersion = true;
+
+ } else {
+ logger.info(`Running newest version (${this.newestVersion})`);
+ this.newVersion = false;
+ }
} else {
- logger.info(`Running newest version (${this.newestVersion})`);
+ logger.notice("Could not find latest version! Please check you internet connection.");
+ this.remotePackageJSON = null;
+ this.remoteVersionNumber = "Unknown";
this.newVersion = false;
}
- } else {
- logger.notice("Could not find latest version! Please check you internet connection.");
}
- });
- }
-
- VersionIsNewerThan(check, current) {
- let checkParts = check.split(".");
- let currentParts = current.split(".");
- let lCheckParts = checkParts.length;
- let lCurrentParts = currentParts.length;
-
- for (let i = 0; i < lCheckParts; i++) {
- if (i >= lCurrentParts) { return true; }
- if (Number (checkParts[i]) > Number (currentParts[i])) { return true; }
- if (Number (checkParts[i]) < Number (currentParts[i])) { return false; }
- }
- return false;
+ );
}
}
 
module.exports = (_neoModules) => {
neoModules = _neoModules;
- return new VersionChecker();
+ return new SelfUpdater();
}; \ No newline at end of file
diff --git a/src/SocketIO/index.js b/src/SocketIO/index.js
index 6e71dbe..15b4a13 100644
--- a/src/SocketIO/index.js
+++ b/src/SocketIO/index.js
@@ -190,18 +190,19 @@ function createAuthorizedNamespace(io) {
/* SelfUpdater */
socket.on("version:current_number", () => {
- socket.emit("version:current_number", neoModules.selfUpdater.version);
+ socket.emit("version:current_number", neoModules.selfUpdater.localVersionNumber);
});
socket.on("version:branch", (fn) => {
- socket.emit("version:branch", neoModules.selfUpdater.repoBranch);
+ socket.emit("version:branch", neoModules.selfUpdater.branch);
});
socket.on("version:newest_number", (fn) => {
- socket.emit("version:newest_number", neoModules.selfUpdater.newestVersion);
+ socket.emit("version:newest_number", neoModules.selfUpdater.remoteVersionNumber);
});
socket.on("version:check_for_update", (fn) => {
- neoModules.selfUpdater.checkVersion();
- socket.emit("version:newest_number", neoModules.selfUpdater.newestVersion);
- fn({success: true});
+ neoModules.selfUpdater.checkVersion().then(() => {
+ socket.emit("version:newest_number", neoModules.selfUpdater.remoteVersionNumber);
+ fn({success: true});
+ });
});
socket.on("system:update_version", () => {
neoModules.selfUpdater.updater.forceUpdate();
diff --git a/src/UserData/index.js b/src/UserData/index.js
index 751c265..5ac32f6 100644
--- a/src/UserData/index.js
+++ b/src/UserData/index.js
@@ -25,7 +25,6 @@ function ensureMainConfig() {
if (config.HTTP.port == null) { config.HTTP.port = 443; }
if (config.SelfUpdater == null) { config.SelfUpdater = {}; }
- if (config.SelfUpdater.branch == null) { config.SelfUpdater.branch = "master"; }
if (config.SelfUpdater.checkVersionInterval == null) { config.SelfUpdater.checkVersionInterval = 1; }
if (config.SelfUpdater.automaticUpdate == null) { config.SelfUpdater.automaticUpdate = false; }