1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/packages/semver/src/index.ts
Sebastian Malton b19e355e0e
Move @k8slens/generate-tray-icons to seperate package (#7057)
* Move @k8slens/generate-tray-icons to seperate package

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Rename very long folder name to fix issue on windows

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Make it possible to build on windows using powershell

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix integration tests on windows

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Don't error on close directly

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Switch to type: module for generate-tray-icons

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Make more packages type:module

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix scripts needing node

Signed-off-by: Sebastian Malton <sebastian@malton.name>

---------

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-02-01 11:41:44 -08:00

93 lines
2.3 KiB
JavaScript

#!/usr/bin/env node
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { SemVer } from "semver";
import commandLineArgs from "command-line-args";
const options = commandLineArgs([
{
name: "version",
defaultOption: true,
},
{
name: "major",
type: Boolean,
},
{
name: "minor",
type: Boolean,
},
{
name: "patch",
type: Boolean,
},
{
name: "prerelease",
type: (input) => {
if (!input || input === "true") {
return true;
}
const asNumber = Number(input);
if (Number.isInteger(asNumber) && asNumber >= 0) {
return asNumber;
}
throw new Error("Invalid --prerelease value, must be either true (default), or a non-negative integrer");
},
},
{
name: "json",
type: Boolean,
},
]);
if (!options.version || typeof options.version !== "string") {
console.error("Missing version");
process.exit(1);
}
const showMajor = Boolean(options.major);
const showMinor = Boolean(options.minor);
const showPatch = Boolean(options.patch);
const showPrerelease = options.prerelease !== undefined;
const showJson = Boolean(options.json);
const showOptionsSet = [+showMajor, +showMinor, +showPatch, +showPrerelease, +showJson].reduce((prev, cur) => prev + cur, 0);
if (showOptionsSet === 0) {
console.error("One of the following must be provided: --major, --minor, --patch, --prerelease, --json");
process.exit(1);
}
if (showOptionsSet > 1) {
console.error("Only one of the following may be provided: --major, --minor, --patch, --prerelease, --json");
process.exit(1);
}
const version = new SemVer(options.version);
if (showMajor) {
console.log(version.major.toString());
} else if (showMinor) {
console.log(version.major.toString());
} else if (showPatch) {
console.log(version.patch.toString());
} else if (showPrerelease) {
if ((options.prerelease ?? true) === true) {
console.log(JSON.stringify(version.prerelease))
} else if (version.prerelease.length > options.prerelease) {
console.log(version.prerelease[options.prerelease].toString());
}
} else if (showJson) {
console.log(JSON.stringify({
major: version.major,
minor: version.minor,
patch: version.patch,
prerelease: version.prerelease,
}));
}