sysd_manager_base/
lib.rs

1pub mod consts;
2pub mod enums;
3pub mod file;
4pub mod proxy;
5
6use std::env;
7
8use tracing::info;
9
10#[derive(Debug, PartialEq, Eq, Clone, Copy)]
11pub enum RunMode {
12    Normal,
13    Development,
14    Both,
15}
16
17impl RunMode {
18    pub fn from_flags(dev: bool, normal: bool) -> Self {
19        #[cfg(not(feature = "flatpak"))]
20        let cargo_in_use = env::var("CARGO");
21
22        #[cfg(feature = "flatpak")]
23        let cargo_in_use: Result<String, env::VarError> = Ok("flatpack".to_string());
24
25        match (dev, normal, cargo_in_use) {
26            (true, true, _) => RunMode::Both,
27            (true, false, _) => RunMode::Development,
28            (false, true, _) => RunMode::Normal,
29            (false, false, Ok(_)) => {
30                info!("The program is being run by cargo. --> Assume Development mode.");
31                RunMode::Development
32            }
33            (false, false, Err(_)) => RunMode::Normal,
34        }
35    }
36
37    pub fn proxy_service_name(&self) -> String {
38        format!("{}.service", self.proxy_service_id())
39    }
40
41    pub fn proxy_service_id(&self) -> &str {
42        #[cfg(feature = "flatpak")]
43        let unit_name = crate::consts::PROXY_SERVICE;
44
45        #[cfg(not(feature = "flatpak"))]
46        let unit_name = if *self == RunMode::Development {
47            crate::consts::PROXY_SERVICE_DEV
48        } else {
49            crate::consts::PROXY_SERVICE
50        };
51
52        unit_name
53    }
54
55    pub fn bus_name(&self) -> &str {
56        #[cfg(feature = "flatpak")]
57        let bus_name = crate::consts::DBUS_NAME_FLATPAK;
58
59        #[cfg(not(feature = "flatpak"))]
60        let bus_name = if *self == RunMode::Development {
61            crate::consts::DBUS_NAME_DEV
62        } else {
63            crate::consts::DBUS_NAME
64        };
65
66        bus_name
67    }
68}