composition_cli/context/
mod.rs1pub mod cli;
2pub mod config;
3
4use std::path::PathBuf;
5
6use cli::Cli;
7use config::Config;
8
9#[derive(Debug)]
10pub struct AppContext {
11 pub path: PathBuf,
12 pub scale_bar: f32,
13 pub config: Config,
14 pub config_loaded: bool,
15}
16
17impl AppContext {
18 pub fn from_cli(cli: Cli) -> Self {
19 let (mut config, config_loaded) = Config::from_config();
20
21 Self::apply_cli_overrides(&mut config, &cli);
23
24 AppContext {
25 path: cli.path,
26 scale_bar: cli.scale_bar,
27 config,
28 config_loaded,
29 }
30 }
31
32 fn apply_cli_overrides(config: &mut Config, cli: &Cli) {
33 if let Some(use_color) = cli.use_color {
35 config.use_color = use_color;
36 }
37
38 if let Some(respect_gitignore) = cli.respect_gitignore {
39 config.respect_gitignore = respect_gitignore;
40 }
41
42 if let Some(ignore_dotfolders) = cli.ignore_dotfolders {
43 config.ignore_dotfolders = ignore_dotfolders;
44 }
45
46 if let Some(ignore_dotfiles) = cli.ignore_dotfiles {
47 config.ignore_dotfiles = ignore_dotfiles;
48 }
49
50 if let Some(ignore_empty_lines) = cli.ignore_empty_lines {
51 config.ignore_empty_lines = ignore_empty_lines;
52 }
53 }
54}