juliaup/
command_config_modifypath.rs

1#[cfg(feature = "selfupdate")]
2pub fn run_command_config_modifypath(
3    value: Option<bool>,
4    quiet: bool,
5    paths: &crate::global_paths::GlobalPaths,
6) -> anyhow::Result<()> {
7    use crate::config_file::{load_config_db, load_mut_config_db, save_config_db};
8    use crate::operations::{
9        add_binfolder_to_path_in_shell_scripts, remove_binfolder_from_path_in_shell_scripts,
10    };
11    use crate::utils::{print_juliaup_style, JuliaupMessageType};
12    use anyhow::Context;
13
14    match value {
15        Some(value) => {
16            let mut config_file = load_mut_config_db(paths)
17                .with_context(|| "`config` command failed to load configuration data.")?;
18
19            let mut value_changed = false;
20
21            if value != config_file.self_data.modify_path {
22                config_file.self_data.modify_path = value;
23
24                value_changed = true;
25            }
26
27            if value {
28                add_binfolder_to_path_in_shell_scripts(&paths.juliaupselfbin)?;
29            } else {
30                remove_binfolder_from_path_in_shell_scripts()?;
31            }
32
33            save_config_db(&mut config_file)
34                .with_context(|| "Failed to save configuration file from `config` command.")?;
35
36            if !quiet {
37                if value_changed {
38                    print_juliaup_style(
39                        "Configure",
40                        &format!("Property 'modifypath' set to '{}'", value),
41                        JuliaupMessageType::Success,
42                    );
43                } else {
44                    print_juliaup_style(
45                        "Configure",
46                        &format!("Property 'modifypath' is already set to '{}'", value),
47                        JuliaupMessageType::Success,
48                    );
49                }
50            }
51        }
52        None => {
53            let config_file = load_config_db(paths, None)
54                .with_context(|| "`config` command failed to load configuration data.")?;
55
56            if !quiet {
57                print_juliaup_style(
58                    "Configure",
59                    &format!(
60                        "Property 'modifypath' set to '{}'",
61                        config_file.self_data.modify_path
62                    ),
63                    JuliaupMessageType::Success,
64                );
65            }
66        }
67    };
68
69    Ok(())
70}