11// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
22use clap:: { App , AppSettings , Arg , ArgMatches , SubCommand } ;
33use crate :: deno_dir;
4+ use log:: Level ;
45
56// Creates vector of strings, Vec<String>
67macro_rules! svec {
@@ -9,7 +10,7 @@ macro_rules! svec {
910
1011#[ derive( Clone , Debug , PartialEq , Default ) ]
1112pub struct DenoFlags {
12- pub log_debug : bool ,
13+ pub log_level : Option < Level > ,
1314 pub version : bool ,
1415 pub reload : bool ,
1516 /// 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):
127128
128129 deno help run" )
129130 . 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" ] )
134137 . global ( true ) ,
135138 ) . arg (
136139 Arg :: with_name ( "reload" )
@@ -409,8 +412,12 @@ fn resolve_paths(paths: Vec<String>) -> Vec<String> {
409412pub fn parse_flags ( matches : & ArgMatches ) -> DenoFlags {
410413 let mut flags = DenoFlags :: default ( ) ;
411414
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+ } ;
414421 }
415422 if matches. is_present ( "version" ) {
416423 flags. version = true ;
@@ -743,11 +750,10 @@ mod tests {
743750 #[ test]
744751 fn test_flags_from_vec_2 ( ) {
745752 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" ] ) ;
747754 assert_eq ! (
748755 flags,
749756 DenoFlags {
750- log_debug: true ,
751757 reload: true ,
752758 ..DenoFlags :: default ( )
753759 }
@@ -758,19 +764,12 @@ mod tests {
758764
759765 #[ test]
760766 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" ] ) ;
769769 assert_eq ! (
770770 flags,
771771 DenoFlags {
772772 reload: true ,
773- log_debug: true ,
774773 allow_write: true ,
775774 ..DenoFlags :: default ( )
776775 }
@@ -782,11 +781,10 @@ mod tests {
782781 #[ test]
783782 fn test_flags_from_vec_4 ( ) {
784783 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" ] ) ;
786785 assert_eq ! (
787786 flags,
788787 DenoFlags {
789- log_debug: true ,
790788 reload: true ,
791789 allow_write: true ,
792790 ..DenoFlags :: default ( )
@@ -1179,7 +1177,6 @@ mod tests {
11791177 let ( flags, subcommand, argv) = flags_from_vec ( svec ! [
11801178 "deno" ,
11811179 "-r" ,
1182- "-D" ,
11831180 "--allow-net" ,
11841181 "run" ,
11851182 "--allow-read" ,
@@ -1189,7 +1186,6 @@ mod tests {
11891186 flags,
11901187 DenoFlags {
11911188 reload: true ,
1192- log_debug: true ,
11931189 allow_net: true ,
11941190 allow_read: true ,
11951191 ..DenoFlags :: default ( )
@@ -1381,4 +1377,19 @@ mod tests {
13811377 ]
13821378 ) ;
13831379 }
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+ }
13841395}
0 commit comments