mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-12 22:06:34 +00:00
Coerce a semver when calculating updatables.
Closes #1390 Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
This commit is contained in:
parent
20cc34ca9d
commit
df3a34eec6
@ -27,10 +27,25 @@ export namespace Installable {
|
|||||||
export namespace Version {
|
export namespace Version {
|
||||||
/**
|
/**
|
||||||
* Most recent version comes first, then the previous versions. (`1.8.1`, `1.6.3`, `1.6.2`, `1.6.1` and so on.)
|
* Most recent version comes first, then the previous versions. (`1.8.1`, `1.6.3`, `1.6.2`, `1.6.1` and so on.)
|
||||||
|
*
|
||||||
|
* If `coerce` is `true` tries to convert any invalid semver strings to a valid semver based on [these](https://github.com/npm/node-semver#coercion) rules.
|
||||||
*/
|
*/
|
||||||
export const COMPARATOR = (left: Version, right: Version): number => {
|
export const COMPARATOR = (
|
||||||
if (semver.valid(left) && semver.valid(right)) {
|
left: Version,
|
||||||
return semver.compare(left, right);
|
right: Version,
|
||||||
|
coerce = false
|
||||||
|
): number => {
|
||||||
|
const validLeft = semver.parse(left);
|
||||||
|
const validRight = semver.parse(right);
|
||||||
|
if (validLeft && validRight) {
|
||||||
|
return semver.compare(validLeft, validRight);
|
||||||
|
}
|
||||||
|
if (coerce) {
|
||||||
|
const coercedLeft = validLeft ?? semver.coerce(left);
|
||||||
|
const coercedRight = validRight ?? semver.coerce(right);
|
||||||
|
if (coercedLeft && coercedRight) {
|
||||||
|
return semver.compare(coercedLeft, coercedRight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return naturalCompare(left, right);
|
return naturalCompare(left, right);
|
||||||
};
|
};
|
||||||
@ -56,7 +71,8 @@ export namespace Installable {
|
|||||||
}
|
}
|
||||||
const result = Installable.Version.COMPARATOR(
|
const result = Installable.Version.COMPARATOR(
|
||||||
latestVersion,
|
latestVersion,
|
||||||
installedVersion
|
installedVersion,
|
||||||
|
true
|
||||||
);
|
);
|
||||||
return result > 0;
|
return result > 0;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user