horto_os_ui_shared/
paths.rs1use std::path::{Path, PathBuf};
4
5#[derive(Debug, Clone)]
25pub struct HostPaths {
26 pub active_setup: PathBuf,
28 pub backup: PathBuf,
30 pub docker: PathBuf,
32 pub etc: PathBuf,
34 pub lease_file: PathBuf,
36}
37
38impl Default for HostPaths {
39 fn default() -> Self {
40 Self {
41 active_setup: PathBuf::from("/srv/active_setup"),
42 backup: PathBuf::from("/srv/backup"),
43 docker: PathBuf::from("/srv/docker"),
44 etc: PathBuf::from("/etc"),
45 lease_file: PathBuf::from("/var/lib/misc/dnsmasq.leases"),
46 }
47 }
48}
49
50impl HostPaths {
51 #[must_use]
53 pub fn resume_file(&self) -> PathBuf {
54 self.active_setup.join("horto_setup_state.json")
55 }
56
57 #[must_use]
59 pub fn full_env_file(&self) -> PathBuf {
60 self.active_setup.join("iot-lan_conf.env")
61 }
62
63 #[must_use]
65 pub fn iot_lan_env_file(&self) -> PathBuf {
66 self.full_env_file()
67 }
68
69 #[must_use]
71 pub fn minimal_env_file(&self) -> PathBuf {
72 self.active_setup.join("minimal_setup_vars.env")
73 }
74
75 #[must_use]
77 pub fn os_configuration_file(&self) -> PathBuf {
78 self.active_setup.join("os-configuration.env")
79 }
80
81 #[must_use]
83 pub fn service_links_file(&self) -> PathBuf {
84 self.active_setup.join("service_links.env")
85 }
86
87 #[must_use]
89 pub fn staging_etc(&self) -> PathBuf {
90 self.active_setup.join("etc")
91 }
92
93 #[must_use]
95 pub fn initial_backup_etc(&self) -> PathBuf {
96 self.backup.join("etc/initial_setup")
97 }
98
99 #[must_use]
101 pub fn docker_assets(&self) -> PathBuf {
102 self.docker.join("assets")
103 }
104
105 #[must_use]
107 pub fn leases_json(&self) -> PathBuf {
108 self.docker_assets().join("leases.json")
109 }
110
111 #[must_use]
113 pub fn leases_html(&self) -> PathBuf {
114 self.docker_assets().join("leases.html")
115 }
116}
117
118pub const ACTIVE_SETUP: &str = "/srv/active_setup";
120pub const BACKUP: &str = "/srv/backup";
122pub const DOCKER: &str = "/srv/docker";
124pub const ETC: &str = "/etc";
126pub const RESUME_FILE: &str = "/srv/active_setup/horto_setup_state.json";
128
129#[must_use]
131pub fn path_str(p: &Path) -> String {
132 p.display().to_string()
133}