vertigo_cli/watch/
watch_opts.rs

1use clap::Args;
2
3use crate::ServeOpts;
4use crate::build::{BuildOpts, BuildOptsInner};
5use crate::commons::models::CommonOpts;
6use crate::serve::ServeOptsInner;
7
8#[derive(Args, Debug, Clone)]
9pub struct WatchOpts {
10    #[arg(long, default_value_t = {5555})]
11    pub port_watch: u16,
12
13    /// Add more directories to be watched for code changes
14    #[arg(long)]
15    pub add_watch_path: Vec<String>,
16
17    /// What ignore lists to search for in watched directories (space-separated, .gitignore format)
18    #[arg(long, default_value_t = {".gitignore".to_string()}, hide_short_help(true))]
19    pub watch_ignore_lists: String,
20
21    /// Additional globs to ignore in every watch path (space-separated, .gitignore format)
22    #[arg(long, default_value_t = {"**/*.swp **/*.swx **/*.rs.bk".to_string()}, hide_short_help(true))]
23    pub global_ignores: String,
24
25    #[clap(flatten)]
26    pub serve: ServeOptsInner,
27
28    #[clap(flatten)]
29    pub build: BuildOptsInner,
30
31    #[clap(flatten)]
32    pub common: CommonOpts,
33}
34
35impl WatchOpts {
36    pub fn to_build_opts(&self) -> BuildOpts {
37        BuildOpts {
38            common: self.common.clone(),
39            inner: self.build.clone(),
40        }
41    }
42
43    pub fn to_serve_opts(&self) -> (ServeOpts, u16) {
44        (
45            ServeOpts {
46                common: self.common.clone(),
47                inner: self.serve.clone(),
48            },
49            self.port_watch,
50        )
51    }
52}