Skip to content

Commit 0e2eaa9

Browse files
committed
Add valid values for --log
1 parent 0263188 commit 0e2eaa9

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

src/node/cli.ts

+21-10
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ export class Optional<T> {
88
public constructor(public readonly value?: T) {}
99
}
1010

11+
export enum LogLevel {
12+
Trace = "trace",
13+
Debug = "debug",
14+
Info = "info",
15+
Warn = "warn",
16+
Error = "error",
17+
}
18+
1119
export class OptionalString extends Optional<string> {}
1220

1321
export interface Args extends VsArgs {
@@ -19,6 +27,7 @@ export interface Args extends VsArgs {
1927
readonly help?: boolean
2028
readonly host?: string
2129
readonly json?: boolean
30+
log?: LogLevel
2231
readonly open?: boolean
2332
readonly port?: number
2433
readonly socket?: string
@@ -49,6 +58,8 @@ type OptionType<T> = T extends boolean
4958
? "boolean"
5059
: T extends OptionalString
5160
? typeof OptionalString
61+
: T extends LogLevel
62+
? typeof LogLevel
5263
: T extends AuthType
5364
? typeof AuthType
5465
: T extends number
@@ -76,7 +87,7 @@ const options: Options<Required<Args>> = {
7687
host: { type: "string", description: "Host for the HTTP server." },
7788
help: { type: "boolean", short: "h", description: "Show this output." },
7889
json: { type: "boolean" },
79-
open: { type: "boolean", description: "Open in the browser on startup. Does not work remotely." },
90+
open: { type: "boolean", description: "Open in browser on startup. Does not work remotely." },
8091
port: { type: "number", description: "Port for the HTTP server." },
8192
socket: { type: "string", path: true, description: "Path to a socket (host and port will be ignored)." },
8293
version: { type: "boolean", short: "v", description: "Display version information." },
@@ -91,7 +102,7 @@ const options: Options<Required<Args>> = {
91102
"install-extension": { type: "string[]" },
92103
"uninstall-extension": { type: "string[]" },
93104

94-
log: { type: "string" },
105+
log: { type: LogLevel },
95106
verbose: { type: "boolean", short: "vvv", description: "Enable verbose logging." },
96107
}
97108

@@ -207,29 +218,29 @@ export const parse = (argv: string[]): Args => {
207218

208219
// Ensure the environment variable and the flag are synced up. The flag takes
209220
// priority over the environment variable.
210-
if (args.log === "trace" || process.env.LOG_LEVEL === "trace" || args.verbose) {
211-
args.log = process.env.LOG_LEVEL = "trace"
221+
if (args.log === LogLevel.Trace || process.env.LOG_LEVEL === LogLevel.Trace || args.verbose) {
222+
args.log = process.env.LOG_LEVEL = LogLevel.Trace
212223
args.verbose = true
213224
} else if (!args.log && process.env.LOG_LEVEL) {
214-
args.log = process.env.LOG_LEVEL
225+
args.log = process.env.LOG_LEVEL as LogLevel
215226
} else if (args.log) {
216227
process.env.LOG_LEVEL = args.log
217228
}
218229

219230
switch (args.log) {
220-
case "trace":
231+
case LogLevel.Trace:
221232
logger.level = Level.Trace
222233
break
223-
case "debug":
234+
case LogLevel.Debug:
224235
logger.level = Level.Debug
225236
break
226-
case "info":
237+
case LogLevel.Info:
227238
logger.level = Level.Info
228239
break
229-
case "warning":
240+
case LogLevel.Warn:
230241
logger.level = Level.Warning
231242
break
232-
case "error":
243+
case LogLevel.Error:
233244
logger.level = Level.Error
234245
break
235246
}

test/cli.test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,10 @@ describe("cli", () => {
119119
assert.throws(() => parse(["--auth", "--invalid"]), /--auth requires a value/)
120120
})
121121

122-
it("should error if number option is invalid", () => {
122+
it("should error if value is invalid", () => {
123123
assert.throws(() => parse(["--port", "foo"]), /--port must be a number/)
124124
assert.throws(() => parse(["--auth", "invalid"]), /--auth valid values: \[password, none\]/)
125+
assert.throws(() => parse(["--log", "invalid"]), /--log valid values: \[trace, debug, info, warn, error\]/)
125126
})
126127

127128
it("should error if the option doesn't exist", () => {

0 commit comments

Comments
 (0)