diff --git a/src/config_files.rs b/src/config_files.rs index 847ecfa020..deceeb1cd2 100644 --- a/src/config_files.rs +++ b/src/config_files.rs @@ -18,6 +18,7 @@ pub(crate) fn read_config_file( config_file: Option>, is_perf_true: bool, is_env_config: bool, + interactive: bool, ) { // Load config startup file if let Some(file) = config_file { @@ -46,7 +47,13 @@ pub(crate) fn read_config_file( config_path.push(if is_env_config { ENV_FILE } else { CONFIG_FILE }); - if !config_path.exists() { + let config_file = if is_env_config { + include_str!("../docs/sample_config/default_env.nu") + } else { + include_str!("../docs/sample_config/default_config.nu") + }; + + if !config_path.exists() && interactive { let file_msg = if is_env_config { "environment config" } else { @@ -64,12 +71,6 @@ pub(crate) fn read_config_file( .read_line(&mut answer) .expect("Failed to read user input"); - let config_file = if is_env_config { - include_str!("../docs/sample_config/default_env.nu") - } else { - include_str!("../docs/sample_config/default_config.nu") - }; - match answer.to_lowercase().trim() { "y" | "" => { let mut output = File::create(&config_path).expect("Unable to create file"); @@ -93,6 +94,19 @@ pub(crate) fn read_config_file( return; } } + } else { + // Just use the contents of "default_config.nu" or "default_env.nu" + eval_source( + engine_state, + stack, + config_file.as_bytes(), + if is_env_config { + "default_env.nu" + } else { + "default_config.nu" + }, + PipelineData::new(Span::new(0, 0)), + ); } eval_config_contents(config_path, engine_state, stack); diff --git a/src/main.rs b/src/main.rs index e063b813cb..c736fe855c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -206,6 +206,14 @@ fn main() -> Result<()> { is_perf_true(), ); // only want to load config and env if relative argument is provided. + config_files::read_config_file( + &mut engine_state, + &mut stack, + binary_args.env_file, + is_perf_true(), + true, + false, + ); if binary_args.config_file.is_some() { config_files::read_config_file( &mut engine_state, @@ -213,15 +221,7 @@ fn main() -> Result<()> { binary_args.config_file, is_perf_true(), false, - ); - } - if binary_args.env_file.is_some() { - config_files::read_config_file( - &mut engine_state, - &mut stack, - binary_args.env_file, - is_perf_true(), - true, + false, ); } @@ -251,6 +251,14 @@ fn main() -> Result<()> { is_perf_true(), ); // only want to load config and env if relative argument is provided. + config_files::read_config_file( + &mut engine_state, + &mut stack, + binary_args.env_file, + is_perf_true(), + true, + false, + ); if binary_args.config_file.is_some() { config_files::read_config_file( &mut engine_state, @@ -258,15 +266,7 @@ fn main() -> Result<()> { binary_args.config_file, is_perf_true(), false, - ); - } - if binary_args.env_file.is_some() { - config_files::read_config_file( - &mut engine_state, - &mut stack, - binary_args.env_file, - is_perf_true(), - true, + false, ); } @@ -323,8 +323,15 @@ fn setup_config( info!("read_config_file {}:{}:{}", file!(), line!(), column!()); } - config_files::read_config_file(engine_state, stack, env_file, is_perf_true(), true); - config_files::read_config_file(engine_state, stack, config_file, is_perf_true(), false); + config_files::read_config_file(engine_state, stack, env_file, is_perf_true(), true, true); + config_files::read_config_file( + engine_state, + stack, + config_file, + is_perf_true(), + false, + true, + ); if is_login_shell { config_files::read_loginshell_file(engine_state, stack, is_perf_true());