matc/devman/
config.rs

1use anyhow::{Context, Result};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ManagerConfig {
6    pub fabric_id: u64,
7    pub controller_id: u64,
8    pub local_address: String,
9}
10
11pub(crate) fn config_path(base: &str) -> String {
12    format!("{}/config.json", base)
13}
14
15pub(crate) fn pem_path(base: &str) -> String {
16    format!("{}/pem", base)
17}
18
19pub(crate) fn devices_path(base: &str) -> String {
20    format!("{}/devices.json", base)
21}
22
23pub(crate) fn load_config(base: &str) -> Result<ManagerConfig> {
24    let path = config_path(base);
25    let data = std::fs::read_to_string(&path).context(format!("reading config from {}", path))?;
26    serde_json::from_str(&data).context("parsing config.json")
27}
28
29pub(crate) fn save_config(base: &str, config: &ManagerConfig) -> Result<()> {
30    let path = config_path(base);
31    let data = serde_json::to_string_pretty(config)?;
32    std::fs::write(&path, data).context(format!("writing config to {}", path))
33}
34