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 if *self == RunMode::Development {
43 crate::consts::PROXY_SERVICE_DEV
44 } else {
45 crate::consts::PROXY_SERVICE
46 }
47 }
48
49 pub fn bus_name(&self) -> &str {
50 #[cfg(feature = "flatpak")]
51 let bus_name = crate::consts::DBUS_NAME_FLATPAK;
52
53 #[cfg(not(feature = "flatpak"))]
54 let bus_name = if *self == RunMode::Development {
55 crate::consts::DBUS_NAME_DEV
56 } else {
57 crate::consts::DBUS_NAME
58 };
59
60 bus_name
61 }
62}