aboutsummaryrefslogtreecommitdiff
path: root/src/SelfUpdater/index.js
diff options
context:
space:
mode:
authorJakob Stendahl <14180120+JakobST1n@users.noreply.github.com>2021-10-11 20:02:04 +0200
committerGitHub <noreply@github.com>2021-10-11 20:02:04 +0200
commitc67531161e56488166a33232f87566309ba8676e (patch)
tree846e59a020e80bea48557d5a06af5728e44961ff /src/SelfUpdater/index.js
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
parentc1b6eec770b885a9829e1f62bad5cc99389ca429 (diff)
downloadLuxcena-Neo-c67531161e56488166a33232f87566309ba8676e.tar.gz
Luxcena-Neo-c67531161e56488166a33232f87566309ba8676e.zip
Merge pull request #24 from JakobST1n/rebuild
v1.0.0
Diffstat (limited to 'src/SelfUpdater/index.js')
-rw-r--r--src/SelfUpdater/index.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/SelfUpdater/index.js b/src/SelfUpdater/index.js
new file mode 100644
index 0000000..5a9baa3
--- /dev/null
+++ b/src/SelfUpdater/index.js
@@ -0,0 +1,68 @@
+let fs = require("fs-extra");
+let url = require("url");
+let request = require('request');
+let exec = require("child_process").exec;
+let logger = require(__appdir + "/src/Logger");
+
+let neoModules;
+
+class VersionChecker {
+
+ 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" + url.parse(this.repoLink).pathname + "/" + this.repoBranch + "/package.json";
+
+ this.newVersion = false;
+ this.newestVersion = this.checkVersion(this.remotePackageJSON);
+
+ this.updateChecker = setInterval(() => {
+ let newVersion = this.checkVersion(this.remotePackageJSON);
+ }, this.checkFrequency);
+
+ }
+
+ checkVersion() {
+ request.get(this.remotePackageJSON, (error, response, body) => {
+ if (!error && response.statusCode === 200) {
+ let remotePackageJSON = JSON.parse(body);
+ let newestVersion = remotePackageJSON["version"];
+ if (this.VersionIsNewerThan(newestVersion, this.version)) {
+ logger.notice("A new version is available on \"" + this.repoBranch + "\" (v" + this.version + ")");
+ this.newVersion = true;
+ } else {
+ logger.info(`Running newest version (${newestVersion})`);
+ this.newVersion = false;
+ }
+ this.newestVersion = newestVersion;
+ } 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();
+};