Skip to main content

source_map_tauri/
cli.rs

1use std::path::PathBuf;
2
3use clap::{Parser, Subcommand};
4
5#[derive(Parser, Debug)]
6#[command(name = "source-map-tauri")]
7#[command(version, about = "Build a searchable source map for Tauri apps")]
8pub struct Cli {
9    #[arg(long, global = true, default_value = ".")]
10    pub root: PathBuf,
11
12    #[arg(long, global = true)]
13    pub repo: Option<String>,
14
15    #[arg(long, global = true)]
16    pub config: Option<PathBuf>,
17
18    #[arg(long, global = true)]
19    pub strict: bool,
20
21    #[arg(long, global = true)]
22    pub verbose: bool,
23
24    #[arg(long, global = true)]
25    pub quiet: bool,
26
27    #[arg(long, global = true)]
28    pub include_node_modules: bool,
29
30    #[arg(long, global = true)]
31    pub include_target: bool,
32
33    #[arg(long, global = true)]
34    pub include_dist: bool,
35
36    #[arg(long, global = true)]
37    pub include_vendor: bool,
38
39    #[arg(long, global = true, default_value_t = true)]
40    pub redact_secrets: bool,
41
42    #[arg(long, global = true, default_value_t = true)]
43    pub detect_phi: bool,
44
45    #[arg(long, global = true, default_value_t = false)]
46    pub fail_on_phi: bool,
47
48    #[command(subcommand)]
49    pub command: Command,
50}
51
52#[derive(Subcommand, Debug)]
53pub enum Command {
54    Init,
55    Doctor,
56    Scan {
57        #[arg(long)]
58        out: Option<PathBuf>,
59    },
60    Upload {
61        #[arg(long, env = "MEILI_URL")]
62        meili_url: Option<String>,
63        #[arg(long, env = "MEILI_MASTER_KEY")]
64        meili_key: Option<String>,
65        #[arg(long)]
66        index: Option<String>,
67        #[arg(long)]
68        input: PathBuf,
69        #[arg(long)]
70        edges: Option<PathBuf>,
71        #[arg(long)]
72        warnings: Option<PathBuf>,
73        #[arg(long, default_value_t = false)]
74        wait: bool,
75        #[arg(long, default_value_t = 5000)]
76        batch_size: usize,
77    },
78    Reindex {
79        #[arg(long, env = "MEILI_URL")]
80        meili_url: Option<String>,
81        #[arg(long, env = "MEILI_MASTER_KEY")]
82        meili_key: Option<String>,
83        #[arg(long)]
84        index: Option<String>,
85        #[arg(long)]
86        out: Option<PathBuf>,
87        #[arg(long, default_value_t = false)]
88        wait: bool,
89        #[arg(long, default_value_t = 5000)]
90        batch_size: usize,
91    },
92    Search {
93        #[arg(long, env = "MEILI_URL")]
94        meili_url: Option<String>,
95        #[arg(long, env = "MEILI_SEARCH_KEY")]
96        meili_key: Option<String>,
97        #[arg(long)]
98        index: Option<String>,
99        #[arg(long)]
100        query: String,
101        #[arg(long)]
102        filter: Option<String>,
103        #[arg(long, default_value_t = 10)]
104        limit: usize,
105    },
106    Trace {
107        #[arg(long)]
108        bundle: PathBuf,
109        #[arg(long)]
110        line: u32,
111        #[arg(long, default_value_t = 0)]
112        column: u32,
113    },
114    Validate {
115        #[arg(long)]
116        input: PathBuf,
117    },
118    PrintSchema {
119        #[arg(long)]
120        kind: String,
121    },
122}