mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add reusable CLI for parsing semver
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
57bd19f51b
commit
db09634107
91
packages/semver/dist/index.mjs
vendored
Normal file
91
packages/semver/dist/index.mjs
vendored
Normal file
@ -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";
|
||||||
|
var options = commandLineArgs([
|
||||||
|
{
|
||||||
|
name: "version",
|
||||||
|
defaultOption: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "major",
|
||||||
|
type: Boolean
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "minor",
|
||||||
|
type: Boolean
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "patch",
|
||||||
|
type: Boolean
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "prerelease",
|
||||||
|
type: function(input) {
|
||||||
|
if (!input || input === "true") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
var 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);
|
||||||
|
}
|
||||||
|
var showMajor = Boolean(options.major);
|
||||||
|
var showMinor = Boolean(options.minor);
|
||||||
|
var showPatch = Boolean(options.patch);
|
||||||
|
var showPrerelease = options.prerelease !== undefined;
|
||||||
|
var showJson = Boolean(options.json);
|
||||||
|
var showOptionsSet = [
|
||||||
|
+showMajor,
|
||||||
|
+showMinor,
|
||||||
|
+showPatch,
|
||||||
|
+showPrerelease,
|
||||||
|
+showJson
|
||||||
|
].reduce(function(prev, cur) {
|
||||||
|
return 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);
|
||||||
|
}
|
||||||
|
var 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) {
|
||||||
|
var _options_prerelease;
|
||||||
|
if (((_options_prerelease = options.prerelease) !== null && _options_prerelease !== void 0 ? _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
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.mjs.map
|
||||||
1
packages/semver/dist/index.mjs.map
vendored
Normal file
1
packages/semver/dist/index.mjs.map
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
||||||
21
packages/semver/package.json
Normal file
21
packages/semver/package.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "@k8slens/semver",
|
||||||
|
"version": "6.4.0-beta.5",
|
||||||
|
"description": "CLI over semver package for picking parts of a version",
|
||||||
|
"main": "dist/index.mjs",
|
||||||
|
"license": "MIT",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"clean": "rm -rf dist/",
|
||||||
|
"build": "swc ./src/index.ts -o ./dist/index.mjs"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@swc/cli": "^0.1.59",
|
||||||
|
"@swc/core": "^1.3.28",
|
||||||
|
"@types/command-line-args": "^5.2.0",
|
||||||
|
"@types/node": "^16.18.11",
|
||||||
|
"@types/semver": "^7.3.13",
|
||||||
|
"command-line-args": "^5.2.1",
|
||||||
|
"semver": "^7.3.8"
|
||||||
|
}
|
||||||
|
}
|
||||||
91
packages/semver/src/index.ts
Normal file
91
packages/semver/src/index.ts
Normal file
@ -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,
|
||||||
|
}));
|
||||||
|
}
|
||||||
19
packages/semver/tsconfig.json
Normal file
19
packages/semver/tsconfig.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"composite": true,
|
||||||
|
"outDir": "dist/",
|
||||||
|
"paths": {
|
||||||
|
"*": [
|
||||||
|
"node_modules/*",
|
||||||
|
"types/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*",
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
]
|
||||||
|
}
|
||||||
1229
packages/semver/yarn.lock
Normal file
1229
packages/semver/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user