hyprshell_core_lib/config/
check.rs

1use crate::config::Config;
2use anyhow::bail;
3
4pub fn check(config: &Config) -> anyhow::Result<()> {
5    if config
6        .windows
7        .as_ref()
8        .map(|w| w.scale >= 15f64 || w.scale <= 0f64)
9        .unwrap_or(false)
10    {
11        bail!("Scale factor must be less than 15 and greater than 0");
12    }
13
14    if let Some(l) = &config.launcher {
15        let mut used: Vec<char> = vec![];
16        for engine in l.plugins.websearch.as_ref().map(|ws| &ws.engines).unwrap_or(&vec![]) {
17            if engine.url.is_empty() {
18                bail!("Search engine url cannot be empty");
19            }
20            if engine.name.is_empty() {
21                bail!("Search engine name cannot be empty");
22            }
23            if used.contains(&engine.key) {
24                bail!("Duplicate search engine key: {}", engine.key);
25            } else {
26                used.push(engine.key);
27            }
28        }
29        if l.plugins.calc.is_some() {
30            #[cfg(not(feature = "calc"))]
31            {
32                bail!("Calc Plugin enabled but not compiled in, please enable the calc feature");
33            }
34        }
35    };
36
37    Ok(())
38}