Split merging of parser delta and stack environment (#6005)

* Remove comment

* Split delta and environment merging

* Move table mode to a more logical place

* Cleanup

* Merge environment after reading default_env.nu

* Fmt
This commit is contained in:
Jakub Žádník
2022-07-14 17:09:27 +03:00
committed by GitHub
parent d95a065e3d
commit 26f31da711
17 changed files with 172 additions and 180 deletions

View File

@ -2,7 +2,7 @@ use log::info;
use nu_cli::{eval_config_contents, eval_source, report_error};
use nu_parser::ParseError;
use nu_path::canonicalize_with;
use nu_protocol::engine::{EngineState, Stack, StateDelta, StateWorkingSet};
use nu_protocol::engine::{EngineState, Stack, StateWorkingSet};
use nu_protocol::{PipelineData, Span, Spanned};
use std::fs::File;
use std::io::Write;
@ -90,6 +90,21 @@ pub(crate) fn read_config_file(
},
PipelineData::new(Span::new(0, 0)),
);
// 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, cwd) {
let working_set = StateWorkingSet::new(engine_state);
report_error(&working_set, &e);
}
}
Err(e) => {
let working_set = StateWorkingSet::new(engine_state);
report_error(&working_set, &e);
}
}
return;
}
}
@ -102,6 +117,7 @@ pub(crate) fn read_config_file(
info!("read_config_file {}:{}:{}", file!(), line!(), column!());
}
}
pub(crate) fn read_loginshell_file(
engine_state: &mut EngineState,
stack: &mut Stack,
@ -139,12 +155,10 @@ pub(crate) fn read_default_env_file(
if is_perf_true {
info!("read_config_file {}:{}:{}", file!(), line!(), column!());
}
// Merge the delta in case env vars changed in the config
// 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_delta(StateDelta::new(engine_state), Some(stack), cwd)
{
if let Err(e) = engine_state.merge_env(stack, cwd) {
let working_set = StateWorkingSet::new(engine_state);
report_error(&working_set, &e);
}