vertigo_cli/build/
build_opts.rs

1use clap::Args;
2use std::path::PathBuf;
3
4use crate::commons::models::CommonOpts;
5
6use super::wasm_path::WasmPath;
7
8#[derive(Args, Debug, Clone)]
9pub struct BuildOpts {
10    #[clap(flatten)]
11    pub common: CommonOpts,
12    #[clap(flatten)]
13    pub inner: BuildOptsInner,
14}
15
16#[derive(Args, Debug, Clone)]
17pub struct BuildOptsInner {
18    pub package_name: Option<String>,
19    #[arg(long, default_value_t = {"/build".to_string()})]
20    pub public_path: String,
21    #[arg(short, long)]
22    pub disable_wasm_opt: bool,
23    #[arg(long)]
24    pub wasm_run_source_map: bool,
25}
26
27impl BuildOpts {
28    pub fn public_path_to(&self, path: impl Into<String>) -> String {
29        let path = path.into();
30        format!("{}/{path}", self.inner.public_path)
31    }
32
33    pub fn new_path_in_static_make(&self, path: &[&str]) -> WasmPath {
34        let mut result = self.get_dest_dir();
35
36        for chunk in path {
37            result.push(*chunk);
38        }
39
40        result
41    }
42
43    pub fn new_path_in_static_from(&self, path: &WasmPath) -> WasmPath {
44        let name_os = path.file_name();
45        self.new_path_in_static_make(&[name_os.as_str()])
46    }
47
48    pub fn get_dest_dir(&self) -> WasmPath {
49        WasmPath::new(PathBuf::from(self.common.dest_dir.as_str()))
50    }
51}