diff options
author | Jakob Stendahl <jakob.stendahl@outlook.com> | 2021-09-19 19:43:11 +0200 |
---|---|---|
committer | Jakob Stendahl <jakob.stendahl@outlook.com> | 2021-09-19 19:43:11 +0200 |
commit | 7bdce37fd3f18e2712e18c4e2c64cac69af0aca1 (patch) | |
tree | b7ad3f1cca92e2dfd2664ae9e65652bd03ff58b2 /src/SelfUpdater/index.js | |
parent | e6880cd8ccf82d993f222cb14b4860581654acb8 (diff) | |
download | Luxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.tar.gz Luxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.zip |
:boom: Introduce new UI based on svelte, and rewrite a lot of the node app and the NeoRuntime
Diffstat (limited to 'src/SelfUpdater/index.js')
-rw-r--r-- | src/SelfUpdater/index.js | 68 |
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..3c5546b --- /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(__basedir + "/src/logger"); + +let neoModules; + +class VersionChecker { + + constructor() { + this.CPackageJson = JSON.parse(fs.readFileSync(__basedir + "/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(); +}; |