1
1
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
2
2
use clap:: { App , AppSettings , Arg , ArgMatches , SubCommand } ;
3
3
use crate :: deno_dir;
4
+ use log:: Level ;
4
5
5
6
// Creates vector of strings, Vec<String>
6
7
macro_rules! svec {
@@ -9,7 +10,7 @@ macro_rules! svec {
9
10
10
11
#[ derive( Clone , Debug , PartialEq , Default ) ]
11
12
pub struct DenoFlags {
12
- pub log_debug : bool ,
13
+ pub log_level : Option < Level > ,
13
14
pub version : bool ,
14
15
pub reload : bool ,
15
16
/// When the `--config`/`-c` flag is used to pass the name, this will be set
@@ -127,10 +128,12 @@ To get help on the another subcommands (run in this case):
127
128
128
129
deno help run" )
129
130
. arg (
130
- Arg :: with_name ( "log-debug" )
131
- . short ( "D" )
132
- . long ( "log-debug" )
133
- . help ( "Log debug output" )
131
+ Arg :: with_name ( "log-level" )
132
+ . short ( "L" )
133
+ . long ( "log-level" )
134
+ . help ( "Set log level" )
135
+ . takes_value ( true )
136
+ . possible_values ( & [ "debug" , "info" ] )
134
137
. global ( true ) ,
135
138
) . arg (
136
139
Arg :: with_name ( "reload" )
@@ -409,8 +412,12 @@ fn resolve_paths(paths: Vec<String>) -> Vec<String> {
409
412
pub fn parse_flags ( matches : & ArgMatches ) -> DenoFlags {
410
413
let mut flags = DenoFlags :: default ( ) ;
411
414
412
- if matches. is_present ( "log-debug" ) {
413
- flags. log_debug = true ;
415
+ if matches. is_present ( "log-level" ) {
416
+ flags. log_level = match matches. value_of ( "log-level" ) . unwrap ( ) {
417
+ "debug" => Some ( Level :: Debug ) ,
418
+ "info" => Some ( Level :: Info ) ,
419
+ _ => unreachable ! ( ) ,
420
+ } ;
414
421
}
415
422
if matches. is_present ( "version" ) {
416
423
flags. version = true ;
@@ -743,11 +750,10 @@ mod tests {
743
750
#[ test]
744
751
fn test_flags_from_vec_2 ( ) {
745
752
let ( flags, subcommand, argv) =
746
- flags_from_vec ( svec ! [ "deno" , "-r" , "-D" , " run", "script.ts" ] ) ;
753
+ flags_from_vec ( svec ! [ "deno" , "-r" , "run" , "script.ts" ] ) ;
747
754
assert_eq ! (
748
755
flags,
749
756
DenoFlags {
750
- log_debug: true ,
751
757
reload: true ,
752
758
..DenoFlags :: default ( )
753
759
}
@@ -758,19 +764,12 @@ mod tests {
758
764
759
765
#[ test]
760
766
fn test_flags_from_vec_3 ( ) {
761
- let ( flags, subcommand, argv) = flags_from_vec ( svec ! [
762
- "deno" ,
763
- "run" ,
764
- "-r" ,
765
- "-D" ,
766
- "--allow-write" ,
767
- "script.ts"
768
- ] ) ;
767
+ let ( flags, subcommand, argv) =
768
+ flags_from_vec ( svec ! [ "deno" , "run" , "-r" , "--allow-write" , "script.ts" ] ) ;
769
769
assert_eq ! (
770
770
flags,
771
771
DenoFlags {
772
772
reload: true ,
773
- log_debug: true ,
774
773
allow_write: true ,
775
774
..DenoFlags :: default ( )
776
775
}
@@ -782,11 +781,10 @@ mod tests {
782
781
#[ test]
783
782
fn test_flags_from_vec_4 ( ) {
784
783
let ( flags, subcommand, argv) =
785
- flags_from_vec ( svec ! [ "deno" , "-Dr " , "run" , "--allow-write" , "script.ts" ] ) ;
784
+ flags_from_vec ( svec ! [ "deno" , "-r " , "run" , "--allow-write" , "script.ts" ] ) ;
786
785
assert_eq ! (
787
786
flags,
788
787
DenoFlags {
789
- log_debug: true ,
790
788
reload: true ,
791
789
allow_write: true ,
792
790
..DenoFlags :: default ( )
@@ -1179,7 +1177,6 @@ mod tests {
1179
1177
let ( flags, subcommand, argv) = flags_from_vec ( svec ! [
1180
1178
"deno" ,
1181
1179
"-r" ,
1182
- "-D" ,
1183
1180
"--allow-net" ,
1184
1181
"run" ,
1185
1182
"--allow-read" ,
@@ -1189,7 +1186,6 @@ mod tests {
1189
1186
flags,
1190
1187
DenoFlags {
1191
1188
reload: true ,
1192
- log_debug: true ,
1193
1189
allow_net: true ,
1194
1190
allow_read: true ,
1195
1191
..DenoFlags :: default ( )
@@ -1381,4 +1377,19 @@ mod tests {
1381
1377
]
1382
1378
) ;
1383
1379
}
1380
+
1381
+ #[ test]
1382
+ fn test_flags_from_vec_31 ( ) {
1383
+ let ( flags, subcommand, argv) =
1384
+ flags_from_vec ( svec ! [ "deno" , "--log-level=debug" , "script.ts" ] ) ;
1385
+ assert_eq ! (
1386
+ flags,
1387
+ DenoFlags {
1388
+ log_level: Some ( Level :: Debug ) ,
1389
+ ..DenoFlags :: default ( )
1390
+ }
1391
+ ) ;
1392
+ assert_eq ! ( subcommand, DenoSubcommand :: Run ) ;
1393
+ assert_eq ! ( argv, svec![ "deno" , "script.ts" ] )
1394
+ }
1384
1395
}
0 commit comments