|  | 
| 1 | 1 | use anyhow::Result; | 
| 2 | 2 | use clap::Parser; | 
| 3 | 3 | use log::LevelFilter; | 
| 4 |  | -use std::{io::Write, path::Path}; | 
|  | 4 | +use std::{env, io::Write, path::Path}; | 
| 5 | 5 | 
 | 
| 6 | 6 | use rescript::{build, cli, cmd, format, lock, watcher}; | 
| 7 | 7 | 
 | 
| 8 | 8 | fn main() -> Result<()> { | 
| 9 |  | -    let args = cli::Cli::parse(); | 
|  | 9 | +    let mut args: Vec<String> = env::args().collect(); | 
|  | 10 | +    handle_default_arg(&mut args); | 
| 10 | 11 | 
 | 
| 11 |  | -    let log_level_filter = args.verbose.log_level_filter(); | 
|  | 12 | +    let cli = cli::Cli::parse_from(args); | 
|  | 13 | + | 
|  | 14 | +    let log_level_filter = cli.verbose.log_level_filter(); | 
| 12 | 15 | 
 | 
| 13 | 16 |     env_logger::Builder::new() | 
| 14 | 17 |         .format(|buf, record| writeln!(buf, "{}:\n{}", record.level(), record.args())) | 
| 15 | 18 |         .filter_level(log_level_filter) | 
| 16 | 19 |         .target(env_logger::fmt::Target::Stdout) | 
| 17 | 20 |         .init(); | 
| 18 | 21 | 
 | 
| 19 |  | -    let mut command = args.command.unwrap_or(cli::Command::Build(args.build_args)); | 
|  | 22 | +    let mut command = cli.command; | 
| 20 | 23 | 
 | 
| 21 | 24 |     if let cli::Command::Build(build_args) = &command { | 
| 22 | 25 |         if build_args.watch { | 
| @@ -109,3 +112,17 @@ fn get_lock(folder: &str) -> lock::Lock { | 
| 109 | 112 |         acquired_lock => acquired_lock, | 
| 110 | 113 |     } | 
| 111 | 114 | } | 
|  | 115 | + | 
|  | 116 | +fn handle_default_arg(args: &mut Vec<String>) { | 
|  | 117 | +    let first_arg = args.get(1); | 
|  | 118 | +    let global_flags = ["-h", "--help", "-V", "--version"]; | 
|  | 119 | + | 
|  | 120 | +    let needs_default_arg = match first_arg { | 
|  | 121 | +        Some(arg) if !arg.starts_with("-") || global_flags.contains(&arg.as_str()) => false, | 
|  | 122 | +        _ => true, | 
|  | 123 | +    }; | 
|  | 124 | + | 
|  | 125 | +    if needs_default_arg { | 
|  | 126 | +        args.insert(1, "build".to_string()); | 
|  | 127 | +    } | 
|  | 128 | +} | 
0 commit comments