vertigo_cli/build/
build_opts.rs1use 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}