nmd_core/assembler/
assembler_configuration.rs1use std::path::PathBuf;
2use getset::{CopyGetters, Getters, MutGetters, Setters};
3use crate::{dossier::dossier_configuration::DossierConfiguration, theme::Theme};
4
5
6#[derive(Debug, Clone, Getters, CopyGetters, MutGetters, Setters)]
7pub struct AssemblerConfiguration {
8
9 #[getset(get = "pub", set = "pub")]
10 theme: Theme,
11
12 #[getset(get_copy = "pub", set = "pub")]
13 use_remote_addons: bool,
14
15 #[getset(get_copy = "pub", set = "pub")]
16 parallelization: bool,
17
18 #[getset(get = "pub", get_mut = "pub", set = "pub")]
19 external_styles_paths: Vec<PathBuf>,
20
21 #[getset(get = "pub", get_mut = "pub", set = "pub")]
22 external_styles: Vec<String>,
23
24 #[getset(get = "pub", get_mut = "pub", set = "pub")]
25 external_scripts_paths: Vec<PathBuf>,
26
27 #[getset(get = "pub", get_mut = "pub", set = "pub")]
28 external_scripts: Vec<String>,
29}
30
31impl AssemblerConfiguration {
32
33 pub fn new(theme: Theme, use_remote_addons: bool, parallelization: bool) -> Self {
34 Self {
35 theme,
36 use_remote_addons,
37 parallelization,
38
39 ..Default::default()
40 }
41 }
42}
43
44impl Default for AssemblerConfiguration {
45 fn default() -> Self {
46 Self {
47 theme: Theme::default(),
48 use_remote_addons: false,
49 parallelization: false,
50 external_styles_paths: Vec::new(),
51 external_styles: Vec::new(),
52 external_scripts_paths: Vec::new(),
53 external_scripts: Vec::new(),
54 }
55 }
56}
57
58impl From<&DossierConfiguration> for AssemblerConfiguration {
59 fn from(dossier_configuration: &DossierConfiguration) -> Self {
60 Self {
61 theme: dossier_configuration.style().theme().clone(),
62 use_remote_addons: dossier_configuration.compilation().use_remote_addons(),
63 parallelization: dossier_configuration.compilation().parallelization(),
64
65 ..Default::default()
66 }
67 }
68}