1use std::env;
2
3use anyhow::Result;
4use clap::Parser;
5use env_logger::Env;
6
7use crate::feature_cache::{run_feature_cache_cli, Cli};
8use crate::record_cache::{run_record_cache_cli, RecordCacheCli};
9
10pub fn run_cli() -> Result<()> {
11 env_logger::Builder::from_env(Env::default().default_filter_or("info"))
12 .format_timestamp_secs()
13 .try_init()
14 .ok();
15
16 let args: Vec<_> = env::args_os().collect();
17 if args
18 .get(1)
19 .and_then(|value| value.to_str())
20 .is_some_and(|value| value == "record-cache" || value == "build-record-cache")
21 {
22 let mut record_cache_args = Vec::with_capacity(args.len() - 1);
23 record_cache_args.push(args[0].clone());
24 record_cache_args.extend(args.iter().skip(2).cloned());
25 return run_record_cache_cli(RecordCacheCli::parse_from(record_cache_args));
26 }
27
28 run_feature_cache_cli(Cli::parse_from(args))
29}