|
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