MCPcopy
hub / github.com/p-e-w/argos / getShellVersion

Function getShellVersion

argos@pew.worldwidemann.com/utilities.js:279–323  ·  view source on GitHub ↗
(str)

Source from the content-addressed store, hash-verified

277}
278
279export function getShellVersion(str) {
280 let versionParts = str.split(".");
281 let versionNumber = 0;
282
283 if (versionParts.length < 2) {
284 log("Invalid GNOME Shell version '" + str + "'");
285 return 0;
286 }
287
288 let major = Number(versionParts[0]);
289
290 if (major >= 40) {
291 // GNOME 40 and newer versioning scheme
292 // https://discourse.gnome.org/t/new-gnome-versioning-scheme/4235
293 // must be > 3.x.y with x <= 38
294 // For 40.x, the 3rd digit is ignored
295 // 40.alpha -> 33997
296 // 41.beta -> 34098
297 // 41.rc -> 34099
298 // 41.0 -> 34100
299 // 40.1 -> 34001
300 // 40.1.1 -> 34001
301 let testReleases = new Map([["alpha", -3], ["beta", -2], ["rc", -1]]);
302 let minor = testReleases.get(versionParts[1]);
303 let major = Number(versionParts[0]);
304
305 if (typeof minor === "undefined")
306 minor = Number(versionParts[1]);
307
308 if (major >= 40)
309 versionNumber = 30000 + major * 100 + minor;
310
311 } else if (versionParts.length === 3 && versionParts[0] === "3") {
312 versionNumber = versionParts.map(Number).reduce(function(previousValue, currentValue) {
313 return 100 * previousValue + currentValue;
314 });
315 };
316
317 if (versionNumber === 0) {
318 log("Unsupported GNOME Shell version '" + str + "'");
319 return 0;
320 }
321
322 return versionNumber;
323}
324
325export const SHELL_VERSION = getShellVersion(Config.PACKAGE_VERSION);
326const SHELL_3_32 = getShellVersion("3.32.0");

Callers 1

utilities.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected