reactive_graph/tooling/instances/config/
plugins.rs

1use crate::shared::config::plugins::PluginsConfigArgs;
2use crate::tooling::instances::config::serde::read_config_file;
3use crate::tooling::instances::config::serde::write_config_file;
4use reactive_graph_config_model::PluginsConfig;
5use std::path::PathBuf;
6
7pub const PLUGINS_CONFIG_FILENAME: &str = "plugins.toml";
8
9pub fn handle_plugins_config(config_dir: &PathBuf, args: PluginsConfigArgs) -> anyhow::Result<()> {
10    let path = get_plugins_config_path(config_dir);
11    let mut config: PluginsConfig = read_config_file(&path)?;
12    let mut changed = false;
13    if let Some(disable_all_plugins) = args.disable_all_plugins {
14        config.disabled = Some(disable_all_plugins);
15        changed = true;
16    }
17    if let Some(disabled_plugins) = args.disabled_plugins {
18        config.disabled_plugins = Some(disabled_plugins);
19        changed = true;
20    }
21    if let Some(enabled_plugins) = args.enabled_plugins {
22        config.enabled_plugins = Some(enabled_plugins);
23        changed = true;
24    }
25    if let Some(disable_hot_deploy) = args.disable_hot_deploy {
26        config.hot_deploy = Some(!disable_hot_deploy);
27        changed = true;
28    }
29    if let Some(install_location) = args.install_location {
30        config.install_location = Some(install_location);
31        changed = true;
32    }
33    if let Some(hot_deploy_location) = args.hot_deploy_location {
34        config.hot_deploy_location = Some(hot_deploy_location);
35        changed = true;
36    }
37    if changed {
38        write_config_file(&path, config)?;
39    }
40    Ok(())
41}
42
43pub fn get_plugins_config_path(config_dir: &PathBuf) -> PathBuf {
44    let mut path = config_dir.to_owned();
45    path.push(PLUGINS_CONFIG_FILENAME);
46    path
47}