add --table_mode -m parameter (#5513)

* add `--table_mode` `-m` parameter

* underscores to dashes
This commit is contained in:
Darren Schroeder
2022-05-11 16:15:31 -05:00
committed by GitHub
parent ec804f4568
commit 0b95465ea1
5 changed files with 53 additions and 12 deletions

View File

@ -6,7 +6,7 @@ use nu_parser::parse;
use nu_protocol::engine::Stack;
use nu_protocol::{
engine::{EngineState, StateDelta, StateWorkingSet},
PipelineData, Spanned,
PipelineData, Spanned, Value,
};
use std::path::Path;
@ -17,6 +17,7 @@ pub fn evaluate_commands(
stack: &mut Stack,
input: PipelineData,
is_perf_true: bool,
table_mode: Option<Value>,
) -> Result<()> {
// Run a command (or commands) given to us by the user
let (block, delta) = {
@ -37,7 +38,10 @@ pub fn evaluate_commands(
report_error(&working_set, &err);
}
let config = engine_state.get_config().clone();
let mut config = engine_state.get_config().clone();
if let Some(t_mode) = table_mode {
config.table_mode = t_mode.as_string()?;
}
// Merge the delta in case env vars changed in the config
match nu_engine::env::current_dir(engine_state, stack) {
@ -66,7 +70,7 @@ pub fn evaluate_commands(
match eval_block(engine_state, stack, &block, input, false, false) {
Ok(pipeline_data) => {
crate::eval_file::print_table_or_error(engine_state, stack, pipeline_data, &config)
crate::eval_file::print_table_or_error(engine_state, stack, pipeline_data, &mut config)
}
Err(err) => {
let working_set = StateWorkingSet::new(engine_state);

View File

@ -61,16 +61,19 @@ pub fn evaluate_file(
}
pub fn print_table_or_error(
engine_state: &EngineState,
engine_state: &mut EngineState,
stack: &mut Stack,
mut pipeline_data: PipelineData,
config: &Config,
config: &mut Config,
) {
let exit_code = match &mut pipeline_data {
PipelineData::ExternalStream { exit_code, .. } => exit_code.take(),
_ => None,
};
// Change the engine_state config to use the passed in configuration
engine_state.set_config(config);
match engine_state.find_decl("table".as_bytes(), &[]) {
Some(decl_id) => {
let table = engine_state.get_decl(decl_id).run(