Skip to content

Commit 3121581

Browse files
committed
print notice about restarting shell after updating config files
1 parent c15995a commit 3121581

File tree

1 file changed

+27
-24
lines changed
  • rust/crates/mesc_cli/src/cli/subcommands/setup

1 file changed

+27
-24
lines changed

rust/crates/mesc_cli/src/cli/subcommands/setup/command.rs

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::{MescCliError, SetupArgs};
22
use mesc::{MescError, RpcConfig};
33
use toolstr::Colorize;
4+
use std::path::PathBuf;
45

56
use super::{config_modification::*, inquire_utils::*, selectors::*, shell_config::*, writing::*};
67

@@ -9,7 +10,7 @@ pub(crate) async fn setup_command(args: SetupArgs) -> Result<(), MescCliError> {
910
if args.editor {
1011
edit_config_in_editor(args)
1112
} else {
12-
let mode = get_write_mode()?;
13+
let (mode, shell_config_modified) = get_write_mode()?;
1314
let config = load_config_data(&mode)?;
1415
let endpoint_word = if config.endpoints.len() == 1 { "endpoint" } else { "endpoints" };
1516
let profile_word = if config.profiles.len() == 1 { "profile" } else { "profiles" };
@@ -21,7 +22,12 @@ pub(crate) async fn setup_command(args: SetupArgs) -> Result<(), MescCliError> {
2122
profile_word,
2223
);
2324
println!();
24-
modify_existing_config(config, Some(mode)).await
25+
let result = modify_existing_config(config, Some(mode)).await;
26+
if shell_config_modified {
27+
println!();
28+
println!("{}", "Shell config files were modified. Restart shell to load these files.".magenta())
29+
}
30+
result
2531
}
2632
}
2733

@@ -39,7 +45,7 @@ fn edit_config_in_editor(args: SetupArgs) -> Result<(), MescCliError> {
3945
}
4046

4147
/// get write mode for config
42-
fn get_write_mode() -> Result<ConfigWriteMode, MescCliError> {
48+
fn get_write_mode() -> Result<(ConfigWriteMode, bool), MescCliError> {
4349
match (
4450
std::env::var("MESC_MODE").as_deref(),
4551
std::env::var("MESC_PATH").as_deref(),
@@ -55,18 +61,17 @@ fn get_write_mode() -> Result<ConfigWriteMode, MescCliError> {
5561
"ENV".green().bold()
5662
);
5763
let config_mode = select_config_mode()?;
58-
setup_mesc_mode_env_var(&config_mode)?;
59-
setup_mesc_env_vars(&config_mode)?;
60-
Ok(config_mode)
64+
let modified_first = setup_mesc_mode_env_var(&config_mode)?;
65+
let modified_second = setup_mesc_env_vars(&config_mode)?;
66+
Ok((config_mode, !modified_first.is_empty() || !modified_second.is_empty()))
6167
}
6268
(Ok("PATH"), Ok(path), _, _) | (Err(_), Ok(path), _, _) => {
6369
let path = mesc::load::expand_path(path)?;
6470
println!(" MESC is {}", "enabled".green().bold());
6571
let print_path =
6672
if let Ok(raw_path) = std::env::var("MESC_PATH") { raw_path } else { path.clone() };
6773
println!(" Using {}{}", "MESC_PATH=".green().bold(), print_path.green().bold());
68-
69-
Ok(ConfigWriteMode::Path(path.into()))
74+
Ok((ConfigWriteMode::Path(path.into()), false))
7075
}
7176
(Ok("PATH"), Err(_), _, _) => {
7277
println!(" MESC is enabled");
@@ -77,13 +82,13 @@ fn get_write_mode() -> Result<ConfigWriteMode, MescCliError> {
7782
);
7883
let path = select_config_path()?;
7984
println!(" Using config path: {}", path.to_string_lossy().green().bold());
80-
setup_mesc_path_env_var(&path)?;
81-
Ok(ConfigWriteMode::Path(path))
85+
let modified_files = setup_mesc_path_env_var(&path)?;
86+
Ok((ConfigWriteMode::Path(path), !modified_files.is_empty()))
8287
}
8388
(Ok("ENV"), _, Ok(_env), _) | (Err(_), Err(_), Ok(_env), _) => {
8489
println!(" MESC is enabled");
8590
println!(" Using {}", "MESC_MODE=ENV".green().bold());
86-
Ok(ConfigWriteMode::Env(vec![]))
91+
Ok((ConfigWriteMode::Env(vec![]), false))
8792
}
8893
(Ok("ENV"), _, Err(_), _) => {
8994
println!(" MESC is enabled");
@@ -92,7 +97,7 @@ fn get_write_mode() -> Result<ConfigWriteMode, MescCliError> {
9297
"MESC_MODE=ENV".green().bold(),
9398
"MESC_ENV".green().bold()
9499
);
95-
Ok(ConfigWriteMode::Env(vec![]))
100+
Ok((ConfigWriteMode::Env(vec![]), false))
96101
}
97102
(Ok(other), _, _, _) => {
98103
eprintln!("Invaild value for {}: {}", "MESC_MODE".green().bold(), other.green().bold());
@@ -112,15 +117,15 @@ fn get_write_mode() -> Result<ConfigWriteMode, MescCliError> {
112117
"MESC_ENV".green().bold()
113118
);
114119
let mode = select_config_mode()?;
115-
setup_mesc_env_vars(&mode)?;
116-
Ok(mode)
120+
let modified_files = setup_mesc_env_vars(&mode)?;
121+
Ok((mode, !modified_files.is_empty()))
117122
}
118123
(Err(_), Err(_), Err(_), false) => {
119124
println!(" MESC is disabled because no MESC env vars are set");
120125
println!(" To enabled MESC, set one of the MESC env vars");
121126
let mode = select_config_mode()?;
122-
setup_mesc_env_vars(&mode)?;
123-
Ok(mode)
127+
let modified_files = setup_mesc_env_vars(&mode)?;
128+
Ok((mode, !modified_files.is_empty()))
124129
}
125130
}
126131
}
@@ -210,24 +215,22 @@ fn load_config_data(mode: &ConfigWriteMode) -> Result<RpcConfig, MescCliError> {
210215
Ok(config)
211216
}
212217

213-
fn setup_mesc_mode_env_var(mode: &ConfigWriteMode) -> Result<(), MescCliError> {
218+
fn setup_mesc_mode_env_var(mode: &ConfigWriteMode) -> Result<Vec<PathBuf>, MescCliError> {
214219
let value = match mode {
215220
ConfigWriteMode::Path(_) => "PATH",
216221
ConfigWriteMode::Env(_) => "ENV",
217222
};
218-
modify_shell_config_var("MESC_MODE", value.to_string(), None)?;
219-
Ok(())
223+
modify_shell_config_var("MESC_MODE", value.to_string(), None)
220224
}
221225

222-
fn setup_mesc_env_vars(mode: &ConfigWriteMode) -> Result<(), MescCliError> {
226+
fn setup_mesc_env_vars(mode: &ConfigWriteMode) -> Result<Vec<PathBuf>, MescCliError> {
223227
match mode {
224228
ConfigWriteMode::Path(path) => setup_mesc_path_env_var(path),
225-
ConfigWriteMode::Env(_) => Ok(()),
229+
ConfigWriteMode::Env(_) => Ok(vec![]),
226230
}
227231
}
228232

229-
fn setup_mesc_path_env_var(path: &std::path::Path) -> Result<(), MescCliError> {
233+
fn setup_mesc_path_env_var(path: &std::path::Path) -> Result<Vec<PathBuf>, MescCliError> {
230234
let value = path.to_string_lossy().to_string();
231-
modify_shell_config_var("MESC_PATH", value, None)?;
232-
Ok(())
235+
modify_shell_config_var("MESC_PATH", value, None)
233236
}

0 commit comments

Comments
 (0)