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}