make cli parser less strict
This commit is contained in:
+10
-5
@@ -42,7 +42,7 @@ const options = {
|
|||||||
|
|
||||||
export const CommandLine = parseArgs({
|
export const CommandLine = parseArgs({
|
||||||
options,
|
options,
|
||||||
strict: true,
|
strict: false as true, // we manually check later, so cast to true to get better types
|
||||||
allowPositionals: true
|
allowPositionals: true
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ export function checkCommandLineForHelpOrVersion() {
|
|||||||
const { help, version } = CommandLine.values;
|
const { help, version } = CommandLine.values;
|
||||||
|
|
||||||
if (version) {
|
if (version) {
|
||||||
console.error(`Vesktop v${app.getVersion()}`);
|
console.log(`Vesktop v${app.getVersion()}`);
|
||||||
app.exit(0);
|
app.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,15 +84,20 @@ export function checkCommandLineForHelpOrVersion() {
|
|||||||
.map(([flags, description]) => ` ${flags.padEnd(padding, " ")}${description}`)
|
.map(([flags, description]) => ` ${flags.padEnd(padding, " ")}${description}`)
|
||||||
.join("\n");
|
.join("\n");
|
||||||
|
|
||||||
console.error(base + "\n" + optionsHelp);
|
console.log(base + "\n" + optionsHelp);
|
||||||
app.exit(0);
|
app.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [name, def] of Object.entries(options)) {
|
for (const [name, def] of Object.entries(options)) {
|
||||||
const value = CommandLine.values[name];
|
const value = CommandLine.values[name];
|
||||||
if (!value) continue;
|
if (value == null) continue;
|
||||||
|
|
||||||
if ("options" in def && !def.options?.includes(value)) {
|
if (typeof value !== def.type) {
|
||||||
|
console.error(`Invalid options. Expected ${def.type === "boolean" ? "no" : "an"} argument for --${name}`);
|
||||||
|
app.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("options" in def && !def.options?.includes(value as string)) {
|
||||||
console.error(`Invalid value for --${name}: ${value}\nExpected one of: ${def.options.join(", ")}`);
|
console.error(`Invalid value for --${name}: ${value}\nExpected one of: ${def.options.join(", ")}`);
|
||||||
app.exit(1);
|
app.exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user