Skip to main content

atd_sdk/
endpoint.rs

1use std::path::PathBuf;
2
3#[derive(Debug, Clone)]
4pub enum Endpoint {
5    UnixSocket(PathBuf),
6}
7
8impl Endpoint {
9    pub fn unix(path: impl Into<PathBuf>) -> Self {
10        Endpoint::UnixSocket(path.into())
11    }
12
13    /// Default ANOS daemon socket: `$HOME/.anos/anos.sock`.
14    pub fn default_anos() -> Self {
15        let home = std::env::var("HOME").unwrap_or_else(|_| ".".into());
16        Endpoint::UnixSocket(PathBuf::from(home).join(".anos").join("anos.sock"))
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn unix_constructor_accepts_str_and_pathbuf() {
26        let e1 = Endpoint::unix("/tmp/a.sock");
27        let e2 = Endpoint::unix(PathBuf::from("/tmp/a.sock"));
28        match (e1, e2) {
29            (Endpoint::UnixSocket(a), Endpoint::UnixSocket(b)) => assert_eq!(a, b),
30        }
31    }
32
33    #[test]
34    fn default_anos_uses_dot_anos_anos_sock() {
35        let e = Endpoint::default_anos();
36        match e {
37            Endpoint::UnixSocket(p) => {
38                let s = p.to_string_lossy().to_string();
39                assert!(s.ends_with(".anos/anos.sock"), "got: {s}");
40            }
41        }
42    }
43}