@@ -8,6 +8,14 @@ export class Optional<T> {
8
8
public constructor ( public readonly value ?: T ) { }
9
9
}
10
10
11
+ export enum LogLevel {
12
+ Trace = "trace" ,
13
+ Debug = "debug" ,
14
+ Info = "info" ,
15
+ Warn = "warn" ,
16
+ Error = "error" ,
17
+ }
18
+
11
19
export class OptionalString extends Optional < string > { }
12
20
13
21
export interface Args extends VsArgs {
@@ -19,6 +27,7 @@ export interface Args extends VsArgs {
19
27
readonly help ?: boolean
20
28
readonly host ?: string
21
29
readonly json ?: boolean
30
+ log ?: LogLevel
22
31
readonly open ?: boolean
23
32
readonly port ?: number
24
33
readonly socket ?: string
@@ -49,6 +58,8 @@ type OptionType<T> = T extends boolean
49
58
? "boolean"
50
59
: T extends OptionalString
51
60
? typeof OptionalString
61
+ : T extends LogLevel
62
+ ? typeof LogLevel
52
63
: T extends AuthType
53
64
? typeof AuthType
54
65
: T extends number
@@ -76,7 +87,7 @@ const options: Options<Required<Args>> = {
76
87
host : { type : "string" , description : "Host for the HTTP server." } ,
77
88
help : { type : "boolean" , short : "h" , description : "Show this output." } ,
78
89
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." } ,
80
91
port : { type : "number" , description : "Port for the HTTP server." } ,
81
92
socket : { type : "string" , path : true , description : "Path to a socket (host and port will be ignored)." } ,
82
93
version : { type : "boolean" , short : "v" , description : "Display version information." } ,
@@ -91,7 +102,7 @@ const options: Options<Required<Args>> = {
91
102
"install-extension" : { type : "string[]" } ,
92
103
"uninstall-extension" : { type : "string[]" } ,
93
104
94
- log : { type : "string" } ,
105
+ log : { type : LogLevel } ,
95
106
verbose : { type : "boolean" , short : "vvv" , description : "Enable verbose logging." } ,
96
107
}
97
108
@@ -207,29 +218,29 @@ export const parse = (argv: string[]): Args => {
207
218
208
219
// Ensure the environment variable and the flag are synced up. The flag takes
209
220
// 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
212
223
args . verbose = true
213
224
} else if ( ! args . log && process . env . LOG_LEVEL ) {
214
- args . log = process . env . LOG_LEVEL
225
+ args . log = process . env . LOG_LEVEL as LogLevel
215
226
} else if ( args . log ) {
216
227
process . env . LOG_LEVEL = args . log
217
228
}
218
229
219
230
switch ( args . log ) {
220
- case "trace" :
231
+ case LogLevel . Trace :
221
232
logger . level = Level . Trace
222
233
break
223
- case "debug" :
234
+ case LogLevel . Debug :
224
235
logger . level = Level . Debug
225
236
break
226
- case "info" :
237
+ case LogLevel . Info :
227
238
logger . level = Level . Info
228
239
break
229
- case "warning" :
240
+ case LogLevel . Warn :
230
241
logger . level = Level . Warning
231
242
break
232
- case "error" :
243
+ case LogLevel . Error :
233
244
logger . level = Level . Error
234
245
break
235
246
}
0 commit comments