pub mod consts;
pub mod enums;
pub mod file;
pub mod proxy;
use std::env;
use tracing::info;
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum RunMode {
Normal,
Development,
Both,
}
pub fn getuid() -> u32 {
unsafe { libc::getuid() }
}
impl RunMode {
pub fn from_flags(dev: bool, normal: bool) -> Self {
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
let cargo_in_use = env::var("CARGO");
#[cfg(feature = "flatpak")]
let cargo_in_use: Result<String, env::VarError> = Ok("flatpack".to_string());
#[cfg(feature = "appimage")]
let cargo_in_use: Result<String, env::VarError> = Ok("flatpack".to_string());
match (dev, normal, cargo_in_use) {
(true, true, _) => RunMode::Both,
(true, false, _) => RunMode::Development,
(false, true, _) => RunMode::Normal,
(false, false, Ok(_)) => {
info!("The program is being run by cargo. --> Assume Development mode.");
RunMode::Development
}
(false, false, Err(_)) => RunMode::Normal,
}
}
pub fn proxy_service_name(&self) -> String {
format!("{}.service", self.proxy_service_id())
}
pub fn proxy_service_id(&self) -> &str {
if *self == RunMode::Development {
crate::consts::PROXY_SERVICE_DEV
} else {
crate::consts::PROXY_SERVICE
}
}
pub fn bus_name(&self) -> &str {
#[cfg(feature = "flatpak")]
let bus_name = crate::consts::DBUS_NAME_FLATPAK;
#[cfg(feature = "appimage")]
let bus_name = crate::consts::DBUS_NAME_APPIMAGE;
#[cfg(not(any(feature = "flatpak", feature = "appimage")))]
let bus_name = if *self == RunMode::Development {
crate::consts::DBUS_NAME_DEV
} else {
crate::consts::DBUS_NAME
};
bus_name
}
}