@@ -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+
1119export class OptionalString extends Optional < string > { }
1220
1321export 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 }
0 commit comments