From 11389cded258c78fe69f4e3c5d126162b5e2eded Mon Sep 17 00:00:00 2001 From: Darren Schroeder <343840+fdncred@users.noreply.github.com> Date: Sun, 5 Jan 2025 21:52:21 -0600 Subject: [PATCH] Revert "Remove no-longer-needed convert_env_values calls (#14681)" This reverts commit 0d3f76ddefedd46229be200d8080f1520bb89b0f. --- crates/nu-cli/src/repl.rs | 9 ++++++++- crates/nu-engine/src/env.rs | 17 ++++++++++++++++- src/config_files.rs | 12 ++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/crates/nu-cli/src/repl.rs b/crates/nu-cli/src/repl.rs index 1fe5109cfc..47b89f8bd8 100644 --- a/crates/nu-cli/src/repl.rs +++ b/crates/nu-cli/src/repl.rs @@ -19,7 +19,7 @@ use miette::{ErrReport, IntoDiagnostic, Result}; use nu_cmd_base::util::get_editor; use nu_color_config::StyleComputer; #[allow(deprecated)] -use nu_engine::{current_dir_str, env_to_strings}; +use nu_engine::{convert_env_values, current_dir_str, env_to_strings}; use nu_parser::{lex, parse, trim_quotes_str}; use nu_protocol::{ config::NuCursorShape, @@ -79,6 +79,13 @@ pub fn evaluate_repl( stack.clone(), ); + let start_time = std::time::Instant::now(); + // Translate environment variables from Strings to Values + if let Err(e) = convert_env_values(engine_state, &unique_stack) { + report_shell_error(engine_state, &e); + } + perf!("translate env vars", start_time, use_color); + // seed env vars unique_stack.add_env_var( "CMD_DURATION_MS".into(), diff --git a/crates/nu-engine/src/env.rs b/crates/nu-engine/src/env.rs index 0d3fde7de6..54f800958f 100644 --- a/crates/nu-engine/src/env.rs +++ b/crates/nu-engine/src/env.rs @@ -89,7 +89,22 @@ pub fn convert_env_values(engine_state: &mut EngineState, stack: &Stack) -> Resu } } - error = error.or_else(|| ensure_path(&mut new_scope, "PATH")); + #[cfg(not(windows))] + { + error = error.or_else(|| ensure_path(&mut new_scope, "PATH")); + } + + #[cfg(windows)] + { + let first_result = ensure_path(&mut new_scope, "Path"); + if first_result.is_some() { + let second_result = ensure_path(&mut new_scope, "PATH"); + + if second_result.is_some() { + error = error.or(first_result); + } + } + } if let Ok(last_overlay_name) = &stack.last_overlay_name() { if let Some(env_vars) = Arc::make_mut(&mut engine_state.env_vars).get_mut(last_overlay_name) diff --git a/src/config_files.rs b/src/config_files.rs index 3493fe0be8..ce15772e4e 100644 --- a/src/config_files.rs +++ b/src/config_files.rs @@ -52,6 +52,18 @@ pub(crate) fn read_config_file( use_color ); } else { + let start_time = std::time::Instant::now(); + let config = engine_state.get_config(); + let use_color = config.use_ansi_coloring.get(engine_state); + if let Err(e) = convert_env_values(engine_state, stack) { + report_shell_error(engine_state, &e); + } + perf!( + "translate env vars before default_config.nu", + start_time, + use_color + ); + eval_default_config(engine_state, stack, get_default_config(), is_env_config); };