Improve update version checks
This commit is contained in:
parent
497201770b
commit
5536bac463
|
@ -134,6 +134,25 @@ export class CoreUpdater {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const semverRegex = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This works on basic semantic versioning e.g. "1.0.0".
|
||||||
|
*
|
||||||
|
* @param {string} currentVersion
|
||||||
|
* @param {string} content
|
||||||
|
* @returns {boolean} whether there is an update
|
||||||
|
*/
|
||||||
|
function semverComparator(currentVersion, remoteVersion) {
|
||||||
|
currentVersion = currentVersion.split(".").map((e) => {return parseInt(e);});
|
||||||
|
remoteVersion = remoteVersion.split(".").map((e) => {return parseInt(e);});
|
||||||
|
|
||||||
|
if (remoteVersion[0] > currentVersion[0]) return true;
|
||||||
|
else if (remoteVersion[0] == currentVersion[0] && remoteVersion[1] > currentVersion[1]) return true;
|
||||||
|
else if (remoteVersion[0] == currentVersion[0] && remoteVersion[1] == currentVersion[1] && remoteVersion[2] > currentVersion[2]) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class AddonUpdater {
|
class AddonUpdater {
|
||||||
|
|
||||||
|
@ -176,7 +195,10 @@ class AddonUpdater {
|
||||||
if (this.pending.includes(filename)) return;
|
if (this.pending.includes(filename)) return;
|
||||||
const info = this.cache[path.basename(filename)];
|
const info = this.cache[path.basename(filename)];
|
||||||
if (!info) return;
|
if (!info) return;
|
||||||
const hasUpdate = info.version != currentVersion;
|
let hasUpdate = info.update > currentVersion;
|
||||||
|
if (semverRegex.test(info.version) && semverRegex.test(currentVersion)) {
|
||||||
|
hasUpdate = semverComparator(currentVersion, info.version);
|
||||||
|
}
|
||||||
if (!hasUpdate) return;
|
if (!hasUpdate) return;
|
||||||
this.pending.push(filename);
|
this.pending.push(filename);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue