mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix dist tags being wrong (#7028)
* Add reusable CLI for parsing semver Signed-off-by: Sebastian Malton <sebastian@malton.name> * Use CLI to specify dist-tag Signed-off-by: Sebastian Malton <sebastian@malton.name> * Remove dead scripts Signed-off-by: Sebastian Malton <sebastian@malton.name> * Add git ignore Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
57bd19f51b
commit
70872459b5
8 files changed
+1369
-15
No files matched your search
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* 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,
|
||||
}));
|
||||
}
|
||||
Reference in new issue
Block a user