vertigo_cli/watch/
watch_opts.rs

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