Skip to main content

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
17pub fn getuid() -> u32 {
18    unsafe { libc::getuid() }
19}
20
21impl RunMode {
22    pub fn from_flags(dev: bool, normal: bool) -> Self {
23        #[cfg(not(any(feature = "flatpak", feature = "appimage")))]
24        let cargo_in_use = env::var("CARGO");
25
26        #[cfg(feature = "flatpak")]
27        let cargo_in_use: Result<String, env::VarError> = Ok("flatpack".to_string());
28
29        #[cfg(feature = "appimage")]
30        let cargo_in_use: Result<String, env::VarError> = Ok("flatpack".to_string());
31
32        match (dev, normal, cargo_in_use) {
33            (true, true, _) => RunMode::Both,
34            (true, false, _) => RunMode::Development,
35            (false, true, _) => RunMode::Normal,
36            (false, false, Ok(_)) => {
37                info!("The program is being run by cargo. --> Assume Development mode.");
38                RunMode::Development
39            }
40            (false, false, Err(_)) => RunMode::Normal,
41        }
42    }
43
44    pub fn proxy_service_name(&self) -> String {
45        format!("{}.service", self.proxy_service_id())
46    }
47
48    pub fn proxy_service_id(&self) -> &str {
49        if *self == RunMode::Development {
50            crate::consts::PROXY_SERVICE_DEV
51        } else {
52            crate::consts::PROXY_SERVICE
53        }
54    }
55
56    pub fn bus_name(&self) -> &str {
57        #[cfg(feature = "flatpak")]
58        let bus_name = crate::consts::DBUS_NAME_FLATPAK;
59
60        #[cfg(feature = "appimage")]
61        let bus_name = crate::consts::DBUS_NAME_APPIMAGE;
62
63        #[cfg(not(any(feature = "flatpak", feature = "appimage")))]
64        let bus_name = if *self == RunMode::Development {
65            crate::consts::DBUS_NAME_DEV
66        } else {
67            crate::consts::DBUS_NAME
68        };
69
70        bus_name
71    }
72}