1use std::path::PathBuf;
6
7pub(crate) mod serial_device;
8
9pub fn parse_wayland_sock(value: &str) -> Result<(String, PathBuf), String> {
11 let mut components = value.split(',');
12 let path = PathBuf::from(match components.next() {
13 None => return Err("missing socket path".to_string()),
14 Some(c) => c,
15 });
16 let mut name = "";
17 for c in components {
18 let mut kv = c.splitn(2, '=');
19 let (kind, value) = match (kv.next(), kv.next()) {
20 (Some(kind), Some(value)) => (kind, value),
21 _ => return Err(format!("option must be of the form `kind=value`: {c}")),
22 };
23 match kind {
24 "name" => name = value,
25 _ => return Err(format!("unrecognized option: {kind}")),
26 }
27 }
28
29 Ok((name.to_string(), path))
30}