Fix config creation during printing (#9353)

This commit is contained in:
Jakub Žádník
2023-06-04 22:04:28 +03:00
committed by GitHub
parent df15fc24fe
commit 82e6873702
15 changed files with 66 additions and 100 deletions

View File

@ -100,12 +100,7 @@ pub fn eval_config_contents(
// Merge the environment in case env vars changed in the config
match nu_engine::env::current_dir(engine_state, stack) {
Ok(cwd) => {
if let Err(e) = engine_state.merge_env(stack) {
let working_set = StateWorkingSet::new(engine_state);
report_error(&working_set, &e);
}
if let Err(e) = engine_state.set_current_working_dir(cwd) {
if let Err(e) = engine_state.merge_env(stack, cwd) {
let working_set = StateWorkingSet::new(engine_state);
report_error(&working_set, &e);
}

View File

@ -53,12 +53,6 @@ Since this command has no output, there is no point in piping it with other comm
let no_newline = call.has_flag("no-newline");
let to_stderr = call.has_flag("stderr");
// We merge stack to make sure we render the changes if any were made in the `block`
//
// CONSIDERED TO BE A CODE SMELL AND IT BETTER BE RESOLVED UPWARDS THE CALLING STACK
let engine = engine_state.clone_with_env(stack)?;
let engine_state = &engine;
// This will allow for easy printing of pipelines as well
if !args.is_empty() {
for arg in args {

View File

@ -172,8 +172,7 @@ pub fn evaluate_repl(
PipelineData::empty(),
false,
);
engine_state.merge_env(stack)?;
engine_state.set_current_working_dir(get_guaranteed_cwd(engine_state, stack))?;
engine_state.merge_env(stack, get_guaranteed_cwd(engine_state, stack))?;
}
engine_state.set_startup_time(entire_start_time.elapsed().as_nanos() as i64);
@ -192,18 +191,14 @@ pub fn evaluate_repl(
loop {
let loop_start_time = std::time::Instant::now();
let cwd = get_guaranteed_cwd(engine_state, stack);
start_time = std::time::Instant::now();
// Before doing anything, merge the environment from the previous REPL iteration into the
// permanent state.
if let Err(err) = engine_state.merge_env(stack) {
if let Err(err) = engine_state.merge_env(stack, cwd) {
report_error_new(engine_state, &err);
}
let cwd = get_guaranteed_cwd(engine_state, stack);
if let Err(err) = engine_state.set_current_working_dir(cwd) {
report_error_new(engine_state, &err);
}
perf(
"merge env",
start_time,

View File

@ -246,10 +246,6 @@ pub fn eval_source(
match b {
Ok(pipeline_data) => {
// we merge stack here because the block could change the envirenemnt,
// and we need to render it while do print.
let _ = engine_state.merge_env(stack);
let config = engine_state.get_config();
let result;
if let PipelineData::ExternalStream {