prune_lang/cli/
args.rs

1use super::*;
2use clap::{Parser, ValueEnum};
3
4#[derive(ValueEnum, Copy, Clone, Debug, PartialEq, Eq)]
5pub enum SmtBackend {
6    Z3Inc,
7    Z3Sq,
8    CVC5Inc,
9    CVC5Sq,
10    NoSmt,
11}
12
13#[derive(Parser, Debug, Clone)]
14#[command(version, about, long_about = None)]
15pub struct CliArgs {
16    #[arg(value_enum)]
17    pub backend: SmtBackend,
18
19    pub input: PathBuf,
20
21    #[arg(short, long, value_name = "FILE")]
22    pub output: Option<PathBuf>,
23
24    #[arg(long, value_name = "FILE")]
25    pub stat_log: Option<PathBuf>,
26
27    #[arg(short, long, default_value_t = 10, value_name = "INT")]
28    pub verbosity: u8,
29
30    #[arg(long, default_value_t = false)]
31    pub mute_output: bool,
32
33    #[arg(long, default_value_t = false)]
34    pub mute_stat_log: bool,
35
36    #[arg(long, default_value_t = false)]
37    pub warn_as_err: bool,
38}
39
40pub fn parse_cli_args() -> CliArgs {
41    CliArgs::parse()
42}
43
44pub fn get_test_cli_args(prog_name: PathBuf) -> CliArgs {
45    CliArgs {
46        input: prog_name,
47        output: None,
48        stat_log: None,
49        verbosity: 10,
50        backend: SmtBackend::Z3Inc,
51        mute_output: true,
52        mute_stat_log: true,
53        warn_as_err: true,
54    }
55}