From 2013e9300ab63671c62f58c30d395cbf3c1b013c Mon Sep 17 00:00:00 2001 From: JT <547158+jntrnr@users.noreply.github.com> Date: Mon, 13 Dec 2021 16:16:51 +1300 Subject: [PATCH] Make config default if broken (#482) * Make config default if broken * Make config default if broken --- .../nu-command/src/conversions/into/string.rs | 2 +- crates/nu-command/src/core_commands/debug.rs | 2 +- crates/nu-command/src/formats/from/csv.rs | 2 +- crates/nu-command/src/formats/from/eml.rs | 2 +- crates/nu-command/src/formats/from/ics.rs | 2 +- crates/nu-command/src/formats/from/ini.rs | 2 +- crates/nu-command/src/formats/from/json.rs | 2 +- crates/nu-command/src/formats/from/ssv.rs | 2 +- crates/nu-command/src/formats/from/toml.rs | 2 +- crates/nu-command/src/formats/from/tsv.rs | 2 +- crates/nu-command/src/formats/from/url.rs | 2 +- crates/nu-command/src/formats/from/vcf.rs | 2 +- crates/nu-command/src/formats/from/xml.rs | 2 +- crates/nu-command/src/formats/from/yaml.rs | 4 +-- crates/nu-command/src/formats/to/csv.rs | 2 +- crates/nu-command/src/formats/to/html.rs | 2 +- crates/nu-command/src/formats/to/md.rs | 2 +- crates/nu-command/src/formats/to/tsv.rs | 2 +- crates/nu-command/src/formats/to/xml.rs | 2 +- crates/nu-command/src/strings/build_string.rs | 2 +- crates/nu-command/src/strings/str_/collect.rs | 2 +- crates/nu-command/src/system/run_external.rs | 2 +- crates/nu-command/src/viewers/griddle.rs | 2 +- crates/nu-command/src/viewers/table.rs | 2 +- crates/nu-engine/src/eval.rs | 2 +- src/main.rs | 26 +++++++++++++++---- 26 files changed, 47 insertions(+), 31 deletions(-) diff --git a/crates/nu-command/src/conversions/into/string.rs b/crates/nu-command/src/conversions/into/string.rs index c751e48117..598f40130a 100644 --- a/crates/nu-command/src/conversions/into/string.rs +++ b/crates/nu-command/src/conversions/into/string.rs @@ -137,7 +137,7 @@ fn string_helper( let head = call.head; let decimals_value: Option = call.get_flag(engine_state, stack, "decimals")?; let column_paths: Vec = call.rest(engine_state, stack, 0)?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); if let Some(decimal_val) = decimals_value { if decimals && decimal_val.is_negative() { diff --git a/crates/nu-command/src/core_commands/debug.rs b/crates/nu-command/src/core_commands/debug.rs index e6df58baf6..1a0d618172 100644 --- a/crates/nu-command/src/core_commands/debug.rs +++ b/crates/nu-command/src/core_commands/debug.rs @@ -30,7 +30,7 @@ impl Command for Debug { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let raw = call.has_flag("raw"); input.map( diff --git a/crates/nu-command/src/formats/from/csv.rs b/crates/nu-command/src/formats/from/csv.rs index 3510a05ad2..cf60873b1b 100644 --- a/crates/nu-command/src/formats/from/csv.rs +++ b/crates/nu-command/src/formats/from/csv.rs @@ -79,7 +79,7 @@ fn from_csv( let noheaders = call.has_flag("noheaders"); let separator: Option = call.get_flag(engine_state, stack, "separator")?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let sep = match separator { Some(Value::String { val: s, span }) => { diff --git a/crates/nu-command/src/formats/from/eml.rs b/crates/nu-command/src/formats/from/eml.rs index b15eb3da98..9bb65b3298 100644 --- a/crates/nu-command/src/formats/from/eml.rs +++ b/crates/nu-command/src/formats/from/eml.rs @@ -45,7 +45,7 @@ impl Command for FromEml { let head = call.head; let preview_body: Option> = call.get_flag(engine_state, stack, "preview-body")?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_eml(input, preview_body, head, &config) } diff --git a/crates/nu-command/src/formats/from/ics.rs b/crates/nu-command/src/formats/from/ics.rs index 55c4f463c2..c644ab787d 100644 --- a/crates/nu-command/src/formats/from/ics.rs +++ b/crates/nu-command/src/formats/from/ics.rs @@ -34,7 +34,7 @@ impl Command for FromIcs { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_ics(input, head, &config) } diff --git a/crates/nu-command/src/formats/from/ini.rs b/crates/nu-command/src/formats/from/ini.rs index 40666dc0ef..63df9bb7c4 100644 --- a/crates/nu-command/src/formats/from/ini.rs +++ b/crates/nu-command/src/formats/from/ini.rs @@ -56,7 +56,7 @@ b=2' | from ini", input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_ini(input, head, &config) } } diff --git a/crates/nu-command/src/formats/from/json.rs b/crates/nu-command/src/formats/from/json.rs index 4f8c771445..d0f47626c4 100644 --- a/crates/nu-command/src/formats/from/json.rs +++ b/crates/nu-command/src/formats/from/json.rs @@ -75,7 +75,7 @@ impl Command for FromJson { input: PipelineData, ) -> Result { let span = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let mut string_input = input.collect_string("", &config); string_input.push('\n'); diff --git a/crates/nu-command/src/formats/from/ssv.rs b/crates/nu-command/src/formats/from/ssv.rs index f213fdb003..2bc7fdfb93 100644 --- a/crates/nu-command/src/formats/from/ssv.rs +++ b/crates/nu-command/src/formats/from/ssv.rs @@ -267,7 +267,7 @@ fn from_ssv( call: &Call, input: PipelineData, ) -> Result { - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let name = call.head; let noheaders = call.has_flag("noheaders"); diff --git a/crates/nu-command/src/formats/from/toml.rs b/crates/nu-command/src/formats/from/toml.rs index 813bdd2872..4d702b2731 100644 --- a/crates/nu-command/src/formats/from/toml.rs +++ b/crates/nu-command/src/formats/from/toml.rs @@ -73,7 +73,7 @@ b = [1, 2]' | from toml", input: PipelineData, ) -> Result { let span = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let mut string_input = input.collect_string("", &config); string_input.push('\n'); Ok(convert_string_to_value(string_input, span)?.into_pipeline_data()) diff --git a/crates/nu-command/src/formats/from/tsv.rs b/crates/nu-command/src/formats/from/tsv.rs index 075fab72a2..18bc8c6972 100644 --- a/crates/nu-command/src/formats/from/tsv.rs +++ b/crates/nu-command/src/formats/from/tsv.rs @@ -33,7 +33,7 @@ impl Command for FromTsv { call: &Call, input: PipelineData, ) -> Result { - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_tsv(call, input, &config) } } diff --git a/crates/nu-command/src/formats/from/url.rs b/crates/nu-command/src/formats/from/url.rs index 2afa6808f9..cac2f898a4 100644 --- a/crates/nu-command/src/formats/from/url.rs +++ b/crates/nu-command/src/formats/from/url.rs @@ -26,7 +26,7 @@ impl Command for FromUrl { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_url(input, head, &config) } diff --git a/crates/nu-command/src/formats/from/vcf.rs b/crates/nu-command/src/formats/from/vcf.rs index cf60f7ac65..9d009d76c0 100644 --- a/crates/nu-command/src/formats/from/vcf.rs +++ b/crates/nu-command/src/formats/from/vcf.rs @@ -32,7 +32,7 @@ impl Command for FromVcf { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_vcf(input, head, &config) } diff --git a/crates/nu-command/src/formats/from/xml.rs b/crates/nu-command/src/formats/from/xml.rs index 8c579f677c..7217396198 100644 --- a/crates/nu-command/src/formats/from/xml.rs +++ b/crates/nu-command/src/formats/from/xml.rs @@ -30,7 +30,7 @@ impl Command for FromXml { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_xml(input, head, &config) } diff --git a/crates/nu-command/src/formats/from/yaml.rs b/crates/nu-command/src/formats/from/yaml.rs index d463431db5..fed07688a3 100644 --- a/crates/nu-command/src/formats/from/yaml.rs +++ b/crates/nu-command/src/formats/from/yaml.rs @@ -71,7 +71,7 @@ impl Command for FromYaml { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_yaml(input, head, &config) } } @@ -100,7 +100,7 @@ impl Command for FromYml { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); from_yaml(input, head, &config) } } diff --git a/crates/nu-command/src/formats/to/csv.rs b/crates/nu-command/src/formats/to/csv.rs index 269622ceaf..5a33ba1b74 100644 --- a/crates/nu-command/src/formats/to/csv.rs +++ b/crates/nu-command/src/formats/to/csv.rs @@ -60,7 +60,7 @@ impl Command for ToCsv { let head = call.head; let noheaders = call.has_flag("noheaders"); let separator: Option> = call.get_flag(engine_state, stack, "separator")?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); to_csv(input, noheaders, separator, head, config) } } diff --git a/crates/nu-command/src/formats/to/html.rs b/crates/nu-command/src/formats/to/html.rs index 90bd977f96..ec19cec2e3 100644 --- a/crates/nu-command/src/formats/to/html.rs +++ b/crates/nu-command/src/formats/to/html.rs @@ -299,7 +299,7 @@ fn to_html( let partial = call.has_flag("partial"); let list = call.has_flag("list"); let theme: Option> = call.get_flag(engine_state, stack, "theme")?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let vec_of_values = input.into_iter().collect::>(); let headers = merge_descriptors(&vec_of_values); diff --git a/crates/nu-command/src/formats/to/md.rs b/crates/nu-command/src/formats/to/md.rs index 6eef818a8d..48efc31c82 100644 --- a/crates/nu-command/src/formats/to/md.rs +++ b/crates/nu-command/src/formats/to/md.rs @@ -67,7 +67,7 @@ impl Command for ToMd { let head = call.head; let pretty = call.has_flag("pretty"); let per_element = call.has_flag("per-element"); - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); to_md(input, pretty, per_element, config, head) } } diff --git a/crates/nu-command/src/formats/to/tsv.rs b/crates/nu-command/src/formats/to/tsv.rs index 70d4d3ea25..957fa15383 100644 --- a/crates/nu-command/src/formats/to/tsv.rs +++ b/crates/nu-command/src/formats/to/tsv.rs @@ -42,7 +42,7 @@ impl Command for ToTsv { ) -> Result { let head = call.head; let noheaders = call.has_flag("noheaders"); - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); to_tsv(input, noheaders, head, config) } } diff --git a/crates/nu-command/src/formats/to/xml.rs b/crates/nu-command/src/formats/to/xml.rs index 157c193bf1..36c5e87783 100644 --- a/crates/nu-command/src/formats/to/xml.rs +++ b/crates/nu-command/src/formats/to/xml.rs @@ -61,7 +61,7 @@ impl Command for ToXml { input: PipelineData, ) -> Result { let head = call.head; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let pretty: Option> = call.get_flag(engine_state, stack, "pretty")?; to_xml(input, head, pretty, &config) } diff --git a/crates/nu-command/src/strings/build_string.rs b/crates/nu-command/src/strings/build_string.rs index 9c6abada64..b9b58f6ff1 100644 --- a/crates/nu-command/src/strings/build_string.rs +++ b/crates/nu-command/src/strings/build_string.rs @@ -52,7 +52,7 @@ impl Command for BuildString { call: &Call, _input: PipelineData, ) -> Result { - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let output = call .positional .iter() diff --git a/crates/nu-command/src/strings/str_/collect.rs b/crates/nu-command/src/strings/str_/collect.rs index af5a3d6f30..a99b172b90 100644 --- a/crates/nu-command/src/strings/str_/collect.rs +++ b/crates/nu-command/src/strings/str_/collect.rs @@ -37,7 +37,7 @@ impl Command for StrCollect { ) -> Result { let separator: Option = call.opt(engine_state, stack, 0)?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); // Hmm, not sure what we actually want. If you don't use debug_string, Date comes out as human readable // which feels funny diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index 44eb768c3b..56d311f250 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -53,7 +53,7 @@ impl Command for External { let last_expression = call.has_flag("last_expression"); let env_vars = stack.get_env_vars(); - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); // Check if this is a single call to a directory, if so auto-cd let path = nu_path::expand_path(&name.item); diff --git a/crates/nu-command/src/viewers/griddle.rs b/crates/nu-command/src/viewers/griddle.rs index 8489f0fa3c..b3750e92a8 100644 --- a/crates/nu-command/src/viewers/griddle.rs +++ b/crates/nu-command/src/viewers/griddle.rs @@ -60,7 +60,7 @@ prints out the list properly."# let width_param: Option = call.get_flag(engine_state, stack, "width")?; let color_param: bool = call.has_flag("color"); let separator_param: Option = call.get_flag(engine_state, stack, "separator")?; - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let env_str = stack.get_env_var("LS_COLORS"); let use_grid_icons = config.use_grid_icons; diff --git a/crates/nu-command/src/viewers/table.rs b/crates/nu-command/src/viewers/table.rs index b6b6f2dc23..1d620cf63b 100644 --- a/crates/nu-command/src/viewers/table.rs +++ b/crates/nu-command/src/viewers/table.rs @@ -41,7 +41,7 @@ impl Command for Table { input: PipelineData, ) -> Result { let ctrlc = engine_state.ctrlc.clone(); - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let color_hm = get_color_config(&config); let term_width = if let Some((Width(w), Height(_h))) = terminal_size::terminal_size() { diff --git a/crates/nu-engine/src/eval.rs b/crates/nu-engine/src/eval.rs index e2b6055686..a3a82120bf 100644 --- a/crates/nu-engine/src/eval.rs +++ b/crates/nu-engine/src/eval.rs @@ -434,7 +434,7 @@ pub fn eval_subexpression( // to be used later // FIXME: the trimming of the end probably needs to live in a better place - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); let mut s = input.collect_string("", &config); if s.ends_with('\n') { diff --git a/src/main.rs b/src/main.rs index 08eb8b4d89..488d89aaed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ use nu_parser::parse; use nu_protocol::{ ast::Call, engine::{EngineState, Stack, StateWorkingSet}, - PipelineData, ShellError, Span, Value, CONFIG_VARIABLE_ID, + Config, PipelineData, ShellError, Span, Value, CONFIG_VARIABLE_ID, }; use reedline::{Completer, CompletionActionHandler, DefaultPrompt, LineBuffer, Prompt}; use std::{ @@ -140,6 +140,16 @@ fn main() -> Result<()> { }, ); + let config = match stack.get_config() { + Ok(config) => config, + Err(e) => { + let working_set = StateWorkingSet::new(&engine_state); + + report_error(&working_set, &e); + Config::default() + } + }; + match eval_block( &engine_state, &mut stack, @@ -147,7 +157,6 @@ fn main() -> Result<()> { PipelineData::new(Span::unknown()), ) { Ok(pipeline_data) => { - let config = stack.get_config()?; for item in pipeline_data { if let Value::Error { error } = item { let working_set = StateWorkingSet::new(&engine_state); @@ -191,7 +200,6 @@ fn main() -> Result<()> { PipelineData::new(Span::unknown()), ) { Ok(pipeline_data) => { - let config = stack.get_config()?; for item in pipeline_data { if let Value::Error { error } = item { let working_set = StateWorkingSet::new(&engine_state); @@ -289,7 +297,15 @@ fn main() -> Result<()> { } loop { - let config = stack.get_config()?; + let config = match stack.get_config() { + Ok(config) => config, + Err(e) => { + let working_set = StateWorkingSet::new(&engine_state); + + report_error(&working_set, &e); + Config::default() + } + }; //Reset the ctrl-c handler ctrlc.store(false, Ordering::SeqCst); @@ -374,7 +390,7 @@ fn print_pipeline_data( // If the table function is in the declarations, then we can use it // to create the table value that will be printed in the terminal - let config = stack.get_config()?; + let config = stack.get_config().unwrap_or_default(); match engine_state.find_decl("table".as_bytes()) { Some(decl_id) => {