reactive_graph/tooling/instances/config/
instance.rs

1use crate::shared::config::instance::InstanceConfigArgs;
2use crate::tooling::instances::config::serde::read_config_file;
3use crate::tooling::instances::config::serde::write_config_file;
4use reactive_graph_config_model::InstanceConfig;
5use std::path::PathBuf;
6
7pub const INSTANCE_CONFIG_FILENAME: &str = "instance.toml";
8
9pub fn handle_instance_config(config_dir: &PathBuf, args: InstanceConfigArgs) -> anyhow::Result<()> {
10    let path = get_instance_config_path(config_dir);
11    let mut config: InstanceConfig = read_config_file(&path)?;
12    let mut changed = false;
13    if let Some(name) = args.name {
14        config.name = name;
15        changed = true;
16    }
17    if let Some(description) = args.description {
18        config.description = description;
19        changed = true;
20    }
21    if changed {
22        write_config_file(&path, config)?;
23    }
24
25    Ok(())
26}
27
28pub fn get_instance_config_path(config_dir: &PathBuf) -> PathBuf {
29    let mut path = config_dir.to_owned();
30    path.push(INSTANCE_CONFIG_FILENAME);
31    path
32}