11use std:: backtrace:: { Backtrace , BacktraceStatus } ;
22
3- use anyhow:: { Context , bail} ;
4- use clap:: { Arg , Command } ;
5- use colorful:: Colorful ;
3+ use anyhow:: bail;
4+ use clap:: { Arg , ArgAction , Command } ;
65use dash_optimizer:: OptLevel ;
6+ use owo_colors:: OwoColorize ;
77
88mod cmd;
99mod util;
@@ -14,16 +14,14 @@ fn main() -> anyhow::Result<()> {
1414 let opt_level = Arg :: new ( "opt" )
1515 . short ( 'O' )
1616 . long ( "opt" )
17- . value_parser ( |val : & _ | OptLevel :: from_level ( val) . context ( "unknown opt level" ) )
18- . default_value ( "1" )
19- . possible_values ( [ "0" , "1" , "2" ] ) ;
17+ . value_parser ( |val : & _ | OptLevel :: from_level ( val) . ok_or ( "unknown opt level (must be between 0 and 3)" ) )
18+ . default_value ( "1" ) ;
2019
21- let nodejs = Arg :: new ( "node" ) . long ( "node" ) . takes_value ( false ) ;
20+ let nodejs = Arg :: new ( "node" ) . long ( "node" ) . action ( ArgAction :: SetTrue ) ;
2221
2322 let initial_gc_threshold = Arg :: new ( "initial-gc-threshold" )
2423 . help ( "Sets the initial GC object threshold, i.e. the RSS at which the first GC cycle triggers." )
2524 . long ( "initial-gc-threshold" )
26- . takes_value ( true )
2725 . required ( false ) ;
2826
2927 let app = Command :: new ( "dash" )
@@ -39,8 +37,8 @@ fn main() -> anyhow::Result<()> {
3937 Command :: new ( "run" )
4038 . override_help ( "Run a JavaScript file" )
4139 . arg ( Arg :: new ( "file" ) . required ( true ) )
42- . arg ( Arg :: new ( "timing" ) . short ( 't' ) . long ( "timing" ) . takes_value ( false ) )
43- . arg ( Arg :: new ( "quiet" ) . short ( 'q' ) . long ( "quiet" ) . takes_value ( false ) )
40+ . arg ( Arg :: new ( "timing" ) . short ( 't' ) . long ( "timing" ) . action ( ArgAction :: SetTrue ) )
41+ . arg ( Arg :: new ( "quiet" ) . short ( 'q' ) . long ( "quiet" ) . action ( ArgAction :: SetTrue ) )
4442 . arg ( opt_level. clone ( ) )
4543 . arg ( nodejs)
4644 . arg ( initial_gc_threshold. clone ( ) ) ,
@@ -50,12 +48,12 @@ fn main() -> anyhow::Result<()> {
5048 Command :: new ( "dump" )
5149 . override_help ( "Dumps intermediate code representation" )
5250 . arg ( Arg :: new ( "file" ) . required ( true ) )
53- . arg ( Arg :: new ( "ir" ) . long ( "ir" ) . takes_value ( false ) )
54- . arg ( Arg :: new ( "ast" ) . long ( "ast" ) . takes_value ( false ) )
55- . arg ( Arg :: new ( "js" ) . long ( "js" ) . takes_value ( false ) )
56- . arg ( Arg :: new ( "bytecode" ) . long ( "bytecode" ) . takes_value ( false ) )
57- . arg ( Arg :: new ( "tokens" ) . long ( "tokens" ) . takes_value ( false ) )
58- . arg ( Arg :: new ( "types" ) . long ( "types" ) . takes_value ( false ) )
51+ . arg ( Arg :: new ( "ir" ) . long ( "ir" ) . action ( ArgAction :: SetTrue ) )
52+ . arg ( Arg :: new ( "ast" ) . long ( "ast" ) . action ( ArgAction :: SetTrue ) )
53+ . arg ( Arg :: new ( "js" ) . long ( "js" ) . action ( ArgAction :: SetTrue ) )
54+ . arg ( Arg :: new ( "bytecode" ) . long ( "bytecode" ) . action ( ArgAction :: SetTrue ) )
55+ . arg ( Arg :: new ( "tokens" ) . long ( "tokens" ) . action ( ArgAction :: SetTrue ) )
56+ . arg ( Arg :: new ( "types" ) . long ( "types" ) . action ( ArgAction :: SetTrue ) )
5957 . arg ( opt_level) ,
6058 ) ;
6159
0 commit comments