From db86dd9f267e46a7a8aeff75ab87b3d0832d1e00 Mon Sep 17 00:00:00 2001 From: Jack Wright <56345+ayax79@users.noreply.github.com> Date: Sat, 22 Jun 2024 05:23:42 -0700 Subject: [PATCH 1/7] Polars default infer (#13193) Addresses performance issues that @maxim-uvarov found with CSV and JSON lines. This ensures that the schema inference follows the polars defaults of 100 lines. Recent changes caused the default values to be override and caused the entire file to be scanned when inferring the schema. --- .../src/dataframe/eager/open.rs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/crates/nu_plugin_polars/src/dataframe/eager/open.rs b/crates/nu_plugin_polars/src/dataframe/eager/open.rs index 8842e3c7fb..f7ee467877 100644 --- a/crates/nu_plugin_polars/src/dataframe/eager/open.rs +++ b/crates/nu_plugin_polars/src/dataframe/eager/open.rs @@ -32,6 +32,8 @@ use polars_io::{ avro::AvroReader, csv::read::CsvReadOptions, prelude::ParallelStrategy, HiveOptions, }; +const DEFAULT_INFER_SCHEMA: usize = 100; + #[derive(Clone)] pub struct OpenDataFrame; @@ -374,7 +376,9 @@ fn from_jsonl( file_path: &Path, file_span: Span, ) -> Result { - let infer_schema: Option = call.get_flag("infer-schema")?; + let infer_schema: usize = call + .get_flag("infer-schema")? + .unwrap_or(DEFAULT_INFER_SCHEMA); let maybe_schema = call .get_flag("schema")? .map(|schema| NuSchema::try_from(&schema)) @@ -384,7 +388,7 @@ fn from_jsonl( let start_time = std::time::Instant::now(); let df = LazyJsonLineReader::new(file_path) - .with_infer_schema_length(infer_schema) + .with_infer_schema_length(Some(infer_schema)) .with_schema(maybe_schema.map(|s| s.into())) .finish() .map_err(|e| ShellError::GenericError { @@ -417,7 +421,7 @@ fn from_jsonl( let buf_reader = BufReader::new(file); let reader = JsonReader::new(buf_reader) .with_json_format(JsonFormat::JsonLines) - .infer_schema_len(infer_schema); + .infer_schema_len(Some(infer_schema)); let reader = match maybe_schema { Some(schema) => reader.with_schema(schema.into()), @@ -459,7 +463,9 @@ fn from_csv( ) -> Result { let delimiter: Option> = call.get_flag("delimiter")?; let no_header: bool = call.has_flag("no-header")?; - let infer_schema: Option = call.get_flag("infer-schema")?; + let infer_schema: usize = call + .get_flag("infer-schema")? + .unwrap_or(DEFAULT_INFER_SCHEMA); let skip_rows: Option = call.get_flag("skip-rows")?; let columns: Option> = call.get_flag("columns")?; @@ -499,10 +505,7 @@ fn from_csv( None => csv_reader, }; - let csv_reader = match infer_schema { - None => csv_reader, - Some(r) => csv_reader.with_infer_schema_length(Some(r)), - }; + let csv_reader = csv_reader.with_infer_schema_length(Some(infer_schema)); let csv_reader = match skip_rows { None => csv_reader, @@ -535,7 +538,7 @@ fn from_csv( let start_time = std::time::Instant::now(); let df = CsvReadOptions::default() .with_has_header(!no_header) - .with_infer_schema_length(infer_schema) + .with_infer_schema_length(Some(infer_schema)) .with_skip_rows(skip_rows.unwrap_or_default()) .with_schema(maybe_schema.map(|s| s.into())) .with_columns(columns.map(Arc::new)) From dcb6ab63703caf8917793fcbce2a39967ab819d5 Mon Sep 17 00:00:00 2001 From: NotTheDr01ds <32344964+NotTheDr01ds@users.noreply.github.com> Date: Sat, 22 Jun 2024 08:37:34 -0400 Subject: [PATCH 2/7] Fixed `generate` command signature (#13200) # Description Removes `list` as an input type for the `generate` command. This command does not accept pipeline input (and cannot, logically). This can be seen by the use of `_input` in the command's `run()`. Also, due to #13199, in order to pass `toolkit check pr`, one of the examples was changed to remove the `result`. This is probably a better demonstration of the ability of the command to infinitely generate a list anyway, and an infinite list can't be represented in a `result`. # User-Facing Changes Should only be a change to the help. The input type was never valid and couldn't have been used. # Tests + Formatting - :green_circle: `toolkit fmt` - :green_circle: `toolkit clippy` - :green_circle: `toolkit test` - :green_circle: `toolkit test stdlib` --- crates/nu-command/src/generators/generate.rs | 29 ++++---------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/crates/nu-command/src/generators/generate.rs b/crates/nu-command/src/generators/generate.rs index 3549667ff0..aeb375aab0 100644 --- a/crates/nu-command/src/generators/generate.rs +++ b/crates/nu-command/src/generators/generate.rs @@ -12,13 +12,7 @@ impl Command for Generate { fn signature(&self) -> Signature { Signature::build("generate") - .input_output_types(vec![ - (Type::Nothing, Type::List(Box::new(Type::Any))), - ( - Type::List(Box::new(Type::Any)), - Type::List(Box::new(Type::Any)), - ), - ]) + .input_output_types(vec![(Type::Nothing, Type::List(Box::new(Type::Any)))]) .required("initial", SyntaxShape::Any, "Initial value.") .required( "closure", @@ -63,23 +57,10 @@ used as the next argument to the closure, otherwise generation stops. )), }, Example { - example: "generate [0, 1] {|fib| {out: $fib.0, next: [$fib.1, ($fib.0 + $fib.1)]} } | first 10", - description: "Generate a stream of fibonacci numbers", - result: Some(Value::list( - vec![ - Value::test_int(0), - Value::test_int(1), - Value::test_int(1), - Value::test_int(2), - Value::test_int(3), - Value::test_int(5), - Value::test_int(8), - Value::test_int(13), - Value::test_int(21), - Value::test_int(34), - ], - Span::test_data(), - )), + example: + "generate [0, 1] {|fib| {out: $fib.0, next: [$fib.1, ($fib.0 + $fib.1)]} }", + description: "Generate a continuous stream of Fibonacci numbers", + result: None, }, ] } From b6bdadbc6fdbab4d86826f72fe97bf2fd0ad00a6 Mon Sep 17 00:00:00 2001 From: NotTheDr01ds <32344964+NotTheDr01ds@users.noreply.github.com> Date: Sat, 22 Jun 2024 08:41:29 -0400 Subject: [PATCH 3/7] Suppress column index for default `cal` output (#13188) # Description * As discussed in the comments in #11954, this suppresses the index column on `cal` output. It does that by running `table -i false` on the results by default. * Added new `--as-table/-t` flag to revert to the old behavior and output the calendar as structured data * Updated existing tests to use `--as-table` * Added new tests against the string output * Updated `length` test which also used `cal` * Added new example for `--as-table`, with result # User-Facing Changes ## Breaking change The *default* `cal` output has changed from a `list` to a `string`. To obtain structured data from `cal`, use the new `--as-table/-t` flag. # Tests + Formatting - :green_circle: `toolkit fmt` - :green_circle: `toolkit clippy` - :green_circle: `toolkit test` - :green_circle: `toolkit test stdlib` # After Submitting --- crates/nu-command/src/generators/cal.rs | 38 +++++++++++++++-- crates/nu-command/tests/commands/cal.rs | 47 +++++++++++++++++++--- crates/nu-command/tests/commands/length.rs | 2 +- 3 files changed, 77 insertions(+), 10 deletions(-) diff --git a/crates/nu-command/src/generators/cal.rs b/crates/nu-command/src/generators/cal.rs index e1ecc771de..a257f3ab7c 100644 --- a/crates/nu-command/src/generators/cal.rs +++ b/crates/nu-command/src/generators/cal.rs @@ -1,6 +1,7 @@ use chrono::{Datelike, Local, NaiveDate}; use nu_color_config::StyleComputer; use nu_engine::command_prelude::*; +use nu_protocol::ast::{Expr, Expression}; use std::collections::VecDeque; @@ -14,6 +15,7 @@ struct Arguments { month_names: bool, full_year: Option>, week_start: Option>, + as_table: bool, } impl Command for Cal { @@ -26,6 +28,7 @@ impl Command for Cal { .switch("year", "Display the year column", Some('y')) .switch("quarter", "Display the quarter column", Some('q')) .switch("month", "Display the month column", Some('m')) + .switch("as-table", "output as a table", Some('t')) .named( "full-year", SyntaxShape::Int, @@ -43,7 +46,10 @@ impl Command for Cal { "Display the month names instead of integers", None, ) - .input_output_types(vec![(Type::Nothing, Type::table())]) + .input_output_types(vec![ + (Type::Nothing, Type::table()), + (Type::Nothing, Type::String), + ]) .allow_variants_without_examples(true) // TODO: supply exhaustive examples .category(Category::Generators) } @@ -75,10 +81,15 @@ impl Command for Cal { result: None, }, Example { - description: "This month's calendar with the week starting on monday", + description: "This month's calendar with the week starting on Monday", example: "cal --week-start mo", result: None, }, + Example { + description: "How many 'Friday the Thirteenths' occurred in 2015?", + example: "cal --as-table --full-year 2015 | where fr == 13 | length", + result: None, + }, ] } } @@ -101,6 +112,7 @@ pub fn cal( quarter: call.has_flag(engine_state, stack, "quarter")?, full_year: call.get_flag(engine_state, stack, "full-year")?, week_start: call.get_flag(engine_state, stack, "week-start")?, + as_table: call.has_flag(engine_state, stack, "as-table")?, }; let style_computer = &StyleComputer::from_config(engine_state, stack); @@ -131,7 +143,27 @@ pub fn cal( style_computer, )?; - Ok(Value::list(calendar_vec_deque.into_iter().collect(), tag).into_pipeline_data()) + let mut table_no_index = Call::new(Span::unknown()); + table_no_index.add_named(( + Spanned { + item: "index".to_string(), + span: Span::unknown(), + }, + None, + Some(Expression::new_unknown( + Expr::Bool(false), + Span::unknown(), + Type::Bool, + )), + )); + + let cal_table_output = + Value::list(calendar_vec_deque.into_iter().collect(), tag).into_pipeline_data(); + if !arguments.as_table { + crate::Table.run(engine_state, stack, &table_no_index, cal_table_output) + } else { + Ok(cal_table_output) + } } fn get_invalid_year_shell_error(head: Span) -> ShellError { diff --git a/crates/nu-command/tests/commands/cal.rs b/crates/nu-command/tests/commands/cal.rs index 651ab8d3cd..65d6306845 100644 --- a/crates/nu-command/tests/commands/cal.rs +++ b/crates/nu-command/tests/commands/cal.rs @@ -1,8 +1,9 @@ use nu_test_support::{nu, pipeline}; +// Tests against table/structured data #[test] fn cal_full_year() { - let actual = nu!("cal -y --full-year 2010 | first | to json -r"); + let actual = nu!("cal -t -y --full-year 2010 | first | to json -r"); let first_week_2010_json = r#"{"year":2010,"su":null,"mo":null,"tu":null,"we":null,"th":null,"fr":1,"sa":2}"#; @@ -14,7 +15,7 @@ fn cal_full_year() { fn cal_february_2020_leap_year() { let actual = nu!(pipeline( r#" - cal -ym --full-year 2020 --month-names | where month == "february" | to json -r + cal --as-table -ym --full-year 2020 --month-names | where month == "february" | to json -r "# )); @@ -27,7 +28,7 @@ fn cal_february_2020_leap_year() { fn cal_fr_the_thirteenths_in_2015() { let actual = nu!(pipeline( r#" - cal --full-year 2015 | default 0 fr | where fr == 13 | length + cal --as-table --full-year 2015 | default 0 fr | where fr == 13 | length "# )); @@ -38,7 +39,7 @@ fn cal_fr_the_thirteenths_in_2015() { fn cal_rows_in_2020() { let actual = nu!(pipeline( r#" - cal --full-year 2020 | length + cal --as-table --full-year 2020 | length "# )); @@ -49,7 +50,7 @@ fn cal_rows_in_2020() { fn cal_week_day_start_mo() { let actual = nu!(pipeline( r#" - cal --full-year 2020 -m --month-names --week-start mo | where month == january | to json -r + cal --as-table --full-year 2020 -m --month-names --week-start mo | where month == january | to json -r "# )); @@ -62,9 +63,43 @@ fn cal_week_day_start_mo() { fn cal_sees_pipeline_year() { let actual = nu!(pipeline( r#" - cal --full-year 1020 | get mo | first 4 | to json -r + cal --as-table --full-year 1020 | get mo | first 4 | to json -r "# )); assert_eq!(actual.out, "[null,3,10,17]"); } + +// Tests against default string output +#[test] +fn cal_is_string() { + let actual = nu!(pipeline( + r#" + cal | describe + "# + )); + + assert_eq!(actual.out, "string (stream)"); +} + +#[test] +fn cal_year_num_lines() { + let actual = nu!(pipeline( + r#" + cal --full-year 2024 | lines | length + "# + )); + + assert_eq!(actual.out, "68"); +} + +#[test] +fn cal_week_start_string() { + let actual = nu!(pipeline( + r#" + cal --week-start fr | lines | get 1 | split row '│' | get 2 | ansi strip | str trim + "# + )); + + assert_eq!(actual.out, "sa"); +} diff --git a/crates/nu-command/tests/commands/length.rs b/crates/nu-command/tests/commands/length.rs index 63318e65db..b67ac452e8 100644 --- a/crates/nu-command/tests/commands/length.rs +++ b/crates/nu-command/tests/commands/length.rs @@ -2,7 +2,7 @@ use nu_test_support::nu; #[test] fn length_columns_in_cal_table() { - let actual = nu!("cal | columns | length"); + let actual = nu!("cal --as-table | columns | length"); assert_eq!(actual.out, "7"); } From 9b7f899410e0f5bbeddd75d1c431c927c3e610af Mon Sep 17 00:00:00 2001 From: Piepmatz Date: Sat, 22 Jun 2024 22:31:09 +0200 Subject: [PATCH 4/7] Allow missing fields in derived `FromValue::from_value` calls (#13206) # Description In #13031 I added the derive macros for `FromValue` and `IntoValue`. In that implementation, in particular for structs with named fields, it was not possible to omit fields while loading them from a value, when the field is an `Option`. This PR adds extra handling for this behavior, so if a field is an `Option` and that field is missing in the `Value`, then the field becomes `None`. This behavior is also tested in `nu_protocol::value::test_derive::missing_options`. # User-Facing Changes When using structs for options or similar, users can now just emit fields in the record and the derive `from_value` method will be able to understand this, if the struct has an `Option` type for that field. # Tests + Formatting - :green_circle: `toolkit fmt` - :green_circle: `toolkit clippy` - :green_circle: `toolkit test` - :green_circle: `toolkit test stdlib` # After Submitting A showcase for this feature would be great, I tried to use the current derive macro in a plugin of mine for a config but without this addition, they are annoying to use. So, when this is done, I would add an example for such plugin configs that may be loaded via `FromValue`. --- crates/nu-derive-value/src/from.rs | 66 +++++++++++++++------ crates/nu-protocol/src/value/test_derive.rs | 56 +++++++++++++++++ 2 files changed, 103 insertions(+), 19 deletions(-) diff --git a/crates/nu-derive-value/src/from.rs b/crates/nu-derive-value/src/from.rs index 033026c149..783a22920e 100644 --- a/crates/nu-derive-value/src/from.rs +++ b/crates/nu-derive-value/src/from.rs @@ -3,6 +3,7 @@ use proc_macro2::TokenStream as TokenStream2; use quote::{quote, ToTokens}; use syn::{ spanned::Spanned, Attribute, Data, DataEnum, DataStruct, DeriveInput, Fields, Generics, Ident, + Type, }; use crate::attributes::{self, ContainerAttributes}; @@ -116,15 +117,11 @@ fn derive_struct_from_value( /// src_span: span /// })?, /// )?, -/// favorite_toy: as nu_protocol::FromValue>::from_value( -/// record -/// .remove("favorite_toy") -/// .ok_or_else(|| nu_protocol::ShellError::CantFindColumn { -/// col_name: std::string::ToString::to_string("favorite_toy"), -/// span: std::option::Option::None, -/// src_span: span -/// })?, -/// )?, +/// favorite_toy: record +/// .remove("favorite_toy") +/// .map(|v| <#ty as nu_protocol::FromValue>::from_value(v)) +/// .transpose()? +/// .flatten(), /// }) /// } /// } @@ -480,20 +477,29 @@ fn parse_value_via_fields(fields: &Fields, self_ident: impl ToTokens) -> TokenSt match fields { Fields::Named(fields) => { let fields = fields.named.iter().map(|field| { - // TODO: handle missing fields for Options as None let ident = field.ident.as_ref().expect("named has idents"); let ident_s = ident.to_string(); let ty = &field.ty; - quote! { - #ident: <#ty as nu_protocol::FromValue>::from_value( - record + match type_is_option(ty) { + true => quote! { + #ident: record .remove(#ident_s) - .ok_or_else(|| nu_protocol::ShellError::CantFindColumn { - col_name: std::string::ToString::to_string(#ident_s), - span: std::option::Option::None, - src_span: span - })?, - )? + .map(|v| <#ty as nu_protocol::FromValue>::from_value(v)) + .transpose()? + .flatten() + }, + + false => quote! { + #ident: <#ty as nu_protocol::FromValue>::from_value( + record + .remove(#ident_s) + .ok_or_else(|| nu_protocol::ShellError::CantFindColumn { + col_name: std::string::ToString::to_string(#ident_s), + span: std::option::Option::None, + src_span: span + })?, + )? + }, } }); quote! { @@ -537,3 +543,25 @@ fn parse_value_via_fields(fields: &Fields, self_ident: impl ToTokens) -> TokenSt }, } } + +const FULLY_QUALIFIED_OPTION: &str = "std::option::Option"; +const PARTIALLY_QUALIFIED_OPTION: &str = "option::Option"; +const PRELUDE_OPTION: &str = "Option"; + +/// Check if the field type is an `Option`. +/// +/// This function checks if a given type is an `Option`. +/// We assume that an `Option` is [`std::option::Option`] because we can't see the whole code and +/// can't ask the compiler itself. +/// If the `Option` type isn't `std::option::Option`, the user will get a compile error due to a +/// type mismatch. +/// It's very unusual for people to override `Option`, so this should rarely be an issue. +/// +/// When [rust#63084](https://github.com/rust-lang/rust/issues/63084) is resolved, we can use +/// [`std::any::type_name`] for a static assertion check to get a more direct error messages. +fn type_is_option(ty: &Type) -> bool { + let s = ty.to_token_stream().to_string(); + s.starts_with(PRELUDE_OPTION) + || s.starts_with(PARTIALLY_QUALIFIED_OPTION) + || s.starts_with(FULLY_QUALIFIED_OPTION) +} diff --git a/crates/nu-protocol/src/value/test_derive.rs b/crates/nu-protocol/src/value/test_derive.rs index 1865a05418..56bccabd2a 100644 --- a/crates/nu-protocol/src/value/test_derive.rs +++ b/crates/nu-protocol/src/value/test_derive.rs @@ -171,6 +171,62 @@ fn named_fields_struct_incorrect_type() { assert!(res.is_err()); } +#[derive(IntoValue, FromValue, Debug, PartialEq, Default)] +struct ALotOfOptions { + required: bool, + float: Option, + int: Option, + value: Option, + nested: Option, +} + +#[test] +fn missing_options() { + let value = Value::test_record(Record::new()); + let res: Result = ALotOfOptions::from_value(value); + assert!(res.is_err()); + + let value = Value::test_record(record! {"required" => Value::test_bool(true)}); + let expected = ALotOfOptions { + required: true, + ..Default::default() + }; + let actual = ALotOfOptions::from_value(value).unwrap(); + assert_eq!(expected, actual); + + let value = Value::test_record(record! { + "required" => Value::test_bool(true), + "float" => Value::test_float(std::f64::consts::PI), + }); + let expected = ALotOfOptions { + required: true, + float: Some(std::f64::consts::PI), + ..Default::default() + }; + let actual = ALotOfOptions::from_value(value).unwrap(); + assert_eq!(expected, actual); + + let value = Value::test_record(record! { + "required" => Value::test_bool(true), + "int" => Value::test_int(12), + "nested" => Value::test_record(record! { + "u32" => Value::test_int(34), + }), + }); + let expected = ALotOfOptions { + required: true, + int: Some(12), + nested: Some(Nestee { + u32: 34, + some: None, + none: None, + }), + ..Default::default() + }; + let actual = ALotOfOptions::from_value(value).unwrap(); + assert_eq!(expected, actual); +} + #[derive(IntoValue, FromValue, Debug, PartialEq)] struct UnnamedFieldsStruct(u32, String, T) where From 4509944988fe9607bc5256702afb9a7982c76610 Mon Sep 17 00:00:00 2001 From: Bruce Weirdan Date: Mon, 24 Jun 2024 01:43:05 +0200 Subject: [PATCH 5/7] Fix usage parsing for commands defined in CRLF (windows) files (#13212) Fixes nushell/nushell#13207 # Description This fixes the parsing of command usage when that command comes from a file with CRLF line endings. See nushell/nushell#13207 for more details. # User-Facing Changes Users on Windows will get correct autocompletion for `std` commands. --- crates/nu-protocol/src/engine/usage.rs | 4 +++- tests/repl/test_parser.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/nu-protocol/src/engine/usage.rs b/crates/nu-protocol/src/engine/usage.rs index a9cf2c25f1..76f50d2424 100644 --- a/crates/nu-protocol/src/engine/usage.rs +++ b/crates/nu-protocol/src/engine/usage.rs @@ -81,7 +81,9 @@ pub(super) fn build_usage(comment_lines: &[&[u8]]) -> (String, String) { usage.push_str(&comment_line); } - if let Some((brief_usage, extra_usage)) = usage.split_once("\n\n") { + if let Some((brief_usage, extra_usage)) = usage.split_once("\r\n\r\n") { + (brief_usage.to_string(), extra_usage.to_string()) + } else if let Some((brief_usage, extra_usage)) = usage.split_once("\n\n") { (brief_usage.to_string(), extra_usage.to_string()) } else { (usage, String::default()) diff --git a/tests/repl/test_parser.rs b/tests/repl/test_parser.rs index 9d743b175d..0efb1d087a 100644 --- a/tests/repl/test_parser.rs +++ b/tests/repl/test_parser.rs @@ -261,6 +261,22 @@ fn commands_have_usage() -> TestResult { ) } +#[test] +fn commands_from_crlf_source_have_short_usage() -> TestResult { + run_test_contains( + "# This is a test\r\n#\r\n# To see if I have cool usage\r\ndef foo [] {}\r\nscope commands | where name == foo | get usage.0", + "This is a test", + ) +} + +#[test] +fn commands_from_crlf_source_have_extra_usage() -> TestResult { + run_test_contains( + "# This is a test\r\n#\r\n# To see if I have cool usage\r\ndef foo [] {}\r\nscope commands | where name == foo | get extra_usage.0", + "To see if I have cool usage", + ) +} + #[test] fn equals_separates_long_flag() -> TestResult { run_test( From 43e349a274d955185f7a199ddf1db0e4acd6c498 Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Mon, 24 Jun 2024 16:39:01 -0700 Subject: [PATCH 6/7] Mitigate the poor interaction between ndots expansion and non-path strings (#13218) # Description @hustcer reported that slashes were disappearing from external args since #13089: ``` $> ossutil ls oss://abc/b/c Error: invalid cloud url: "oss:/abc/b/c", please make sure the url starts with: "oss://" $> ossutil ls 'oss://abc/b/c' Error: oss: service returned error: StatusCode=403, ErrorCode=UserDisable, ErrorMessage="UserDisable", RequestId=66791EDEFE87B73537120838, Ec=0003-00000801, Bucket=abc, Object= ``` I narrowed this down to the ndots handling, since that does path parsing and path reconstruction in every case. I decided to change that so that it only activates if the string contains at least `...`, since that would be the minimum trigger for ndots, and also to not activate it if the string contains `://`, since it's probably undesirable for a URL. Kind of a hack, but I'm not really sure how else we decide whether someone wants ndots or not. # User-Facing Changes - bare strings not containing ndots are not modified - bare strings containing `://` are not modified # Tests + Formatting Added tests to prevent regression. --- crates/nu-command/src/system/run_external.rs | 23 +++++++++++-- .../nu-command/tests/commands/run_external.rs | 32 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index 104729a786..f82c23a0e0 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -64,7 +64,9 @@ impl Command for External { let expanded_name = match &name { // Expand tilde and ndots on the name if it's a bare string / glob (#13000) - Value::Glob { no_expand, .. } if !*no_expand => expand_ndots(expand_tilde(&*name_str)), + Value::Glob { no_expand, .. } if !*no_expand => { + expand_ndots_safe(expand_tilde(&*name_str)) + } _ => Path::new(&*name_str).to_owned(), }; @@ -294,7 +296,7 @@ fn expand_glob( // For an argument that doesn't include the GLOB_CHARS, just do the `expand_tilde` // and `expand_ndots` expansion if !arg.contains(GLOB_CHARS) { - let path = expand_ndots(expand_tilde(arg)); + let path = expand_ndots_safe(expand_tilde(arg)); return Ok(vec![path.into()]); } @@ -582,6 +584,21 @@ fn escape_cmd_argument(arg: &Spanned) -> Result, ShellE } } +/// Expand ndots, but only if it looks like it probably contains them, because there is some lossy +/// path normalization that happens. +fn expand_ndots_safe(path: impl AsRef) -> PathBuf { + let string = path.as_ref().to_string_lossy(); + + // Use ndots if it contains at least `...`, since that's the minimum trigger point, and don't + // use it if it contains ://, because that looks like a URL scheme and the path normalization + // will mess with that. + if string.contains("...") && !string.contains("://") { + expand_ndots(path) + } else { + path.as_ref().to_owned() + } +} + #[cfg(test)] mod test { use super::*; @@ -610,7 +627,7 @@ mod test { assert_eq!(actual, expected); let actual = expand_glob("./a.txt", cwd, Span::unknown(), &None).unwrap(); - let expected: Vec = vec![Path::new(".").join("a.txt").into()]; + let expected = &["./a.txt"]; assert_eq!(actual, expected); let actual = expand_glob("[*.txt", cwd, Span::unknown(), &None).unwrap(); diff --git a/crates/nu-command/tests/commands/run_external.rs b/crates/nu-command/tests/commands/run_external.rs index daa5abb25b..154c31b71c 100644 --- a/crates/nu-command/tests/commands/run_external.rs +++ b/crates/nu-command/tests/commands/run_external.rs @@ -229,6 +229,38 @@ fn external_command_escape_args() { }) } +#[test] +fn external_command_ndots_args() { + let actual = nu!(r#" + nu --testbin cococo foo/. foo/.. foo/... foo/./bar foo/../bar foo/.../bar ./bar ../bar .../bar + "#); + + assert_eq!( + actual.out, + if cfg!(windows) { + // Windows is a bit weird right now, where if ndots has to fix something it's going to + // change everything to backslashes too. Would be good to fix that + r"foo/. foo/.. foo\..\.. foo/./bar foo/../bar foo\..\..\bar ./bar ../bar ..\..\bar" + } else { + r"foo/. foo/.. foo/../.. foo/./bar foo/../bar foo/../../bar ./bar ../bar ../../bar" + } + ); +} + +#[test] +fn external_command_url_args() { + // If ndots is not handled correctly, we can lose the double forward slashes that are needed + // here + let actual = nu!(r#" + nu --testbin cococo http://example.com http://example.com/.../foo //foo + "#); + + assert_eq!( + actual.out, + "http://example.com http://example.com/.../foo //foo" + ); +} + #[test] #[cfg_attr( not(target_os = "linux"), From f93c6680bd5ae158190556eb1afc924b0290b52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C5=BD=C3=A1dn=C3=ADk?= Date: Tue, 25 Jun 2024 21:29:47 +0300 Subject: [PATCH 7/7] Bump to 0.95.0 (#13221) # Description # User-Facing Changes # Tests + Formatting # After Submitting --- Cargo.lock | 74 +++++++++---------- Cargo.toml | 42 +++++------ crates/nu-cli/Cargo.toml | 26 +++---- crates/nu-cmd-base/Cargo.toml | 12 +-- crates/nu-cmd-extra/Cargo.toml | 22 +++--- crates/nu-cmd-lang/Cargo.toml | 12 +-- crates/nu-cmd-plugin/Cargo.toml | 12 +-- crates/nu-color-config/Cargo.toml | 10 +-- crates/nu-command/Cargo.toml | 36 ++++----- crates/nu-derive-value/Cargo.toml | 4 +- crates/nu-engine/Cargo.toml | 12 +-- crates/nu-explore/Cargo.toml | 20 ++--- crates/nu-glob/Cargo.toml | 4 +- crates/nu-json/Cargo.toml | 6 +- crates/nu-lsp/Cargo.toml | 16 ++-- crates/nu-parser/Cargo.toml | 12 +-- crates/nu-path/Cargo.toml | 4 +- crates/nu-plugin-core/Cargo.toml | 8 +- crates/nu-plugin-engine/Cargo.toml | 14 ++-- crates/nu-plugin-protocol/Cargo.toml | 8 +- crates/nu-plugin-test-support/Cargo.toml | 20 ++--- crates/nu-plugin/Cargo.toml | 12 +-- crates/nu-pretty-hex/Cargo.toml | 4 +- crates/nu-protocol/Cargo.toml | 14 ++-- crates/nu-std/Cargo.toml | 10 +-- crates/nu-system/Cargo.toml | 4 +- crates/nu-table/Cargo.toml | 12 +-- crates/nu-term-grid/Cargo.toml | 6 +- crates/nu-test-support/Cargo.toml | 10 +-- crates/nu-utils/Cargo.toml | 4 +- .../src/sample_config/default_config.nu | 4 +- .../nu-utils/src/sample_config/default_env.nu | 4 +- crates/nu_plugin_custom_values/Cargo.toml | 6 +- crates/nu_plugin_example/Cargo.toml | 10 +-- crates/nu_plugin_formats/Cargo.toml | 8 +- crates/nu_plugin_gstat/Cargo.toml | 8 +- crates/nu_plugin_inc/Cargo.toml | 8 +- .../nu_plugin_nu_example.nu | 4 +- crates/nu_plugin_polars/Cargo.toml | 20 ++--- .../nu_plugin_python_example.py | 4 +- crates/nu_plugin_query/Cargo.toml | 8 +- crates/nu_plugin_stress_internals/Cargo.toml | 4 +- crates/nuon/Cargo.toml | 10 +-- 43 files changed, 274 insertions(+), 274 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba1880d9b5..9b8f5273c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2769,7 +2769,7 @@ dependencies = [ [[package]] name = "nu" -version = "0.94.3" +version = "0.95.0" dependencies = [ "assert_cmd", "crossterm", @@ -2822,7 +2822,7 @@ dependencies = [ [[package]] name = "nu-cli" -version = "0.94.3" +version = "0.95.0" dependencies = [ "chrono", "crossterm", @@ -2857,7 +2857,7 @@ dependencies = [ [[package]] name = "nu-cmd-base" -version = "0.94.3" +version = "0.95.0" dependencies = [ "indexmap", "miette", @@ -2869,7 +2869,7 @@ dependencies = [ [[package]] name = "nu-cmd-extra" -version = "0.94.3" +version = "0.95.0" dependencies = [ "fancy-regex", "heck 0.5.0", @@ -2894,7 +2894,7 @@ dependencies = [ [[package]] name = "nu-cmd-lang" -version = "0.94.3" +version = "0.95.0" dependencies = [ "itertools 0.12.1", "nu-engine", @@ -2906,7 +2906,7 @@ dependencies = [ [[package]] name = "nu-cmd-plugin" -version = "0.94.3" +version = "0.95.0" dependencies = [ "itertools 0.12.1", "nu-engine", @@ -2917,7 +2917,7 @@ dependencies = [ [[package]] name = "nu-color-config" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-ansi-term", "nu-engine", @@ -2929,7 +2929,7 @@ dependencies = [ [[package]] name = "nu-command" -version = "0.94.3" +version = "0.95.0" dependencies = [ "alphanumeric-sort", "base64 0.22.1", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "nu-derive-value" -version = "0.94.3" +version = "0.95.0" dependencies = [ "convert_case", "proc-macro-error", @@ -3049,7 +3049,7 @@ dependencies = [ [[package]] name = "nu-engine" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-glob", "nu-path", @@ -3059,7 +3059,7 @@ dependencies = [ [[package]] name = "nu-explore" -version = "0.94.3" +version = "0.95.0" dependencies = [ "ansi-str", "anyhow", @@ -3084,14 +3084,14 @@ dependencies = [ [[package]] name = "nu-glob" -version = "0.94.3" +version = "0.95.0" dependencies = [ "doc-comment", ] [[package]] name = "nu-json" -version = "0.94.3" +version = "0.95.0" dependencies = [ "linked-hash-map", "num-traits", @@ -3101,7 +3101,7 @@ dependencies = [ [[package]] name = "nu-lsp" -version = "0.94.3" +version = "0.95.0" dependencies = [ "assert-json-diff", "crossbeam-channel", @@ -3122,7 +3122,7 @@ dependencies = [ [[package]] name = "nu-parser" -version = "0.94.3" +version = "0.95.0" dependencies = [ "bytesize", "chrono", @@ -3138,7 +3138,7 @@ dependencies = [ [[package]] name = "nu-path" -version = "0.94.3" +version = "0.95.0" dependencies = [ "dirs-next", "omnipath", @@ -3147,7 +3147,7 @@ dependencies = [ [[package]] name = "nu-plugin" -version = "0.94.3" +version = "0.95.0" dependencies = [ "log", "nix", @@ -3162,7 +3162,7 @@ dependencies = [ [[package]] name = "nu-plugin-core" -version = "0.94.3" +version = "0.95.0" dependencies = [ "interprocess", "log", @@ -3176,7 +3176,7 @@ dependencies = [ [[package]] name = "nu-plugin-engine" -version = "0.94.3" +version = "0.95.0" dependencies = [ "log", "nu-engine", @@ -3191,7 +3191,7 @@ dependencies = [ [[package]] name = "nu-plugin-protocol" -version = "0.94.3" +version = "0.95.0" dependencies = [ "bincode", "nu-protocol", @@ -3203,7 +3203,7 @@ dependencies = [ [[package]] name = "nu-plugin-test-support" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-ansi-term", "nu-cmd-lang", @@ -3221,7 +3221,7 @@ dependencies = [ [[package]] name = "nu-pretty-hex" -version = "0.94.3" +version = "0.95.0" dependencies = [ "heapless", "nu-ansi-term", @@ -3230,7 +3230,7 @@ dependencies = [ [[package]] name = "nu-protocol" -version = "0.94.3" +version = "0.95.0" dependencies = [ "brotli", "byte-unit", @@ -3263,7 +3263,7 @@ dependencies = [ [[package]] name = "nu-std" -version = "0.94.3" +version = "0.95.0" dependencies = [ "log", "miette", @@ -3274,7 +3274,7 @@ dependencies = [ [[package]] name = "nu-system" -version = "0.94.3" +version = "0.95.0" dependencies = [ "chrono", "itertools 0.12.1", @@ -3292,7 +3292,7 @@ dependencies = [ [[package]] name = "nu-table" -version = "0.94.3" +version = "0.95.0" dependencies = [ "fancy-regex", "nu-ansi-term", @@ -3306,7 +3306,7 @@ dependencies = [ [[package]] name = "nu-term-grid" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-utils", "unicode-width", @@ -3314,7 +3314,7 @@ dependencies = [ [[package]] name = "nu-test-support" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-glob", "nu-path", @@ -3326,7 +3326,7 @@ dependencies = [ [[package]] name = "nu-utils" -version = "0.94.3" +version = "0.95.0" dependencies = [ "crossterm_winapi", "log", @@ -3352,7 +3352,7 @@ dependencies = [ [[package]] name = "nu_plugin_example" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-cmd-lang", "nu-plugin", @@ -3362,7 +3362,7 @@ dependencies = [ [[package]] name = "nu_plugin_formats" -version = "0.94.3" +version = "0.95.0" dependencies = [ "eml-parser", "ical", @@ -3375,7 +3375,7 @@ dependencies = [ [[package]] name = "nu_plugin_gstat" -version = "0.94.3" +version = "0.95.0" dependencies = [ "git2", "nu-plugin", @@ -3384,7 +3384,7 @@ dependencies = [ [[package]] name = "nu_plugin_inc" -version = "0.94.3" +version = "0.95.0" dependencies = [ "nu-plugin", "nu-protocol", @@ -3393,7 +3393,7 @@ dependencies = [ [[package]] name = "nu_plugin_polars" -version = "0.94.3" +version = "0.95.0" dependencies = [ "chrono", "chrono-tz 0.9.0", @@ -3424,7 +3424,7 @@ dependencies = [ [[package]] name = "nu_plugin_query" -version = "0.94.3" +version = "0.95.0" dependencies = [ "gjson", "nu-plugin", @@ -3436,7 +3436,7 @@ dependencies = [ [[package]] name = "nu_plugin_stress_internals" -version = "0.94.3" +version = "0.95.0" dependencies = [ "interprocess", "serde", @@ -3562,7 +3562,7 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nuon" -version = "0.94.3" +version = "0.95.0" dependencies = [ "chrono", "fancy-regex", diff --git a/Cargo.toml b/Cargo.toml index 6fce7d3c01..696c012b80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" name = "nu" repository = "https://github.com/nushell/nushell" rust-version = "1.77.2" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -180,22 +180,22 @@ windows = "0.54" winreg = "0.52" [dependencies] -nu-cli = { path = "./crates/nu-cli", version = "0.94.3" } -nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.94.3" } -nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.94.3" } -nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.94.3", optional = true } -nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.94.3" } -nu-command = { path = "./crates/nu-command", version = "0.94.3" } -nu-engine = { path = "./crates/nu-engine", version = "0.94.3" } -nu-explore = { path = "./crates/nu-explore", version = "0.94.3" } -nu-lsp = { path = "./crates/nu-lsp/", version = "0.94.3" } -nu-parser = { path = "./crates/nu-parser", version = "0.94.3" } -nu-path = { path = "./crates/nu-path", version = "0.94.3" } -nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.94.3" } -nu-protocol = { path = "./crates/nu-protocol", version = "0.94.3" } -nu-std = { path = "./crates/nu-std", version = "0.94.3" } -nu-system = { path = "./crates/nu-system", version = "0.94.3" } -nu-utils = { path = "./crates/nu-utils", version = "0.94.3" } +nu-cli = { path = "./crates/nu-cli", version = "0.95.0" } +nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.95.0" } +nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.95.0" } +nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.95.0", optional = true } +nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.95.0" } +nu-command = { path = "./crates/nu-command", version = "0.95.0" } +nu-engine = { path = "./crates/nu-engine", version = "0.95.0" } +nu-explore = { path = "./crates/nu-explore", version = "0.95.0" } +nu-lsp = { path = "./crates/nu-lsp/", version = "0.95.0" } +nu-parser = { path = "./crates/nu-parser", version = "0.95.0" } +nu-path = { path = "./crates/nu-path", version = "0.95.0" } +nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.95.0" } +nu-protocol = { path = "./crates/nu-protocol", version = "0.95.0" } +nu-std = { path = "./crates/nu-std", version = "0.95.0" } +nu-system = { path = "./crates/nu-system", version = "0.95.0" } +nu-utils = { path = "./crates/nu-utils", version = "0.95.0" } reedline = { workspace = true, features = ["bashisms", "sqlite"] } @@ -225,9 +225,9 @@ nix = { workspace = true, default-features = false, features = [ ] } [dev-dependencies] -nu-test-support = { path = "./crates/nu-test-support", version = "0.94.3" } -nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.94.3" } -nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.94.3" } +nu-test-support = { path = "./crates/nu-test-support", version = "0.95.0" } +nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.95.0" } +nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.95.0" } assert_cmd = "2.0" dirs-next = { workspace = true } tango-bench = "0.5" @@ -310,4 +310,4 @@ bench = false # Run individual benchmarks like `cargo bench -- ` e.g. `cargo bench -- parse` [[bench]] name = "benchmarks" -harness = false +harness = false \ No newline at end of file diff --git a/crates/nu-cli/Cargo.toml b/crates/nu-cli/Cargo.toml index c2ca2c9704..8e7c7b5535 100644 --- a/crates/nu-cli/Cargo.toml +++ b/crates/nu-cli/Cargo.toml @@ -5,27 +5,27 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cli" edition = "2021" license = "MIT" name = "nu-cli" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } -nu-command = { path = "../nu-command", version = "0.94.3" } -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } +nu-command = { path = "../nu-command", version = "0.95.0" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } rstest = { workspace = true, default-features = false } tempfile = { workspace = true } [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.3", optional = true } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } -nu-color-config = { path = "../nu-color-config", version = "0.94.3" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.95.0", optional = true } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } +nu-color-config = { path = "../nu-color-config", version = "0.95.0" } nu-ansi-term = { workspace = true } reedline = { workspace = true, features = ["bashisms", "sqlite"] } @@ -46,4 +46,4 @@ which = { workspace = true } [features] plugin = ["nu-plugin-engine"] -system-clipboard = ["reedline/system_clipboard"] +system-clipboard = ["reedline/system_clipboard"] \ No newline at end of file diff --git a/crates/nu-cmd-base/Cargo.toml b/crates/nu-cmd-base/Cargo.toml index fb6a977ab9..773ee05414 100644 --- a/crates/nu-cmd-base/Cargo.toml +++ b/crates/nu-cmd-base/Cargo.toml @@ -5,17 +5,17 @@ edition = "2021" license = "MIT" name = "nu-cmd-base" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-base" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } indexmap = { workspace = true } miette = { workspace = true } -[dev-dependencies] +[dev-dependencies] \ No newline at end of file diff --git a/crates/nu-cmd-extra/Cargo.toml b/crates/nu-cmd-extra/Cargo.toml index 038c9421e8..30c94420a3 100644 --- a/crates/nu-cmd-extra/Cargo.toml +++ b/crates/nu-cmd-extra/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" license = "MIT" name = "nu-cmd-extra" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-extra" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,13 +13,13 @@ version = "0.94.3" bench = false [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-json = { version = "0.94.3", path = "../nu-json" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-pretty-hex = { version = "0.94.3", path = "../nu-pretty-hex" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-json = { version = "0.95.0", path = "../nu-json" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-pretty-hex = { version = "0.95.0", path = "../nu-pretty-hex" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } # Potential dependencies for extras heck = { workspace = true } @@ -33,6 +33,6 @@ v_htmlescape = { workspace = true } itertools = { workspace = true } [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } -nu-command = { path = "../nu-command", version = "0.94.3" } -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } +nu-command = { path = "../nu-command", version = "0.95.0" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu-cmd-lang/Cargo.toml b/crates/nu-cmd-lang/Cargo.toml index dcd940ba58..6db0d4c096 100644 --- a/crates/nu-cmd-lang/Cargo.toml +++ b/crates/nu-cmd-lang/Cargo.toml @@ -6,16 +6,16 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-lang" edition = "2021" license = "MIT" name = "nu-cmd-lang" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } itertools = { workspace = true } shadow-rs = { version = "0.28", default-features = false } @@ -28,4 +28,4 @@ mimalloc = [] trash-support = [] sqlite = [] static-link-openssl = [] -system-clipboard = [] +system-clipboard = [] \ No newline at end of file diff --git a/crates/nu-cmd-plugin/Cargo.toml b/crates/nu-cmd-plugin/Cargo.toml index d274f46a6a..f6eccb753e 100644 --- a/crates/nu-cmd-plugin/Cargo.toml +++ b/crates/nu-cmd-plugin/Cargo.toml @@ -5,16 +5,16 @@ edition = "2021" license = "MIT" name = "nu-cmd-plugin" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-plugin" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.3" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.95.0" } itertools = { workspace = true } -[dev-dependencies] +[dev-dependencies] \ No newline at end of file diff --git a/crates/nu-color-config/Cargo.toml b/crates/nu-color-config/Cargo.toml index 95b06c1f77..34f15cd74f 100644 --- a/crates/nu-color-config/Cargo.toml +++ b/crates/nu-color-config/Cargo.toml @@ -5,18 +5,18 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-color-confi edition = "2021" license = "MIT" name = "nu-color-config" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-json = { path = "../nu-json", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-json = { path = "../nu-json", version = "0.95.0" } nu-ansi-term = { workspace = true } serde = { workspace = true, features = ["derive"] } [dev-dependencies] -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu-command/Cargo.toml b/crates/nu-command/Cargo.toml index f16d62d836..355232b938 100644 --- a/crates/nu-command/Cargo.toml +++ b/crates/nu-command/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" license = "MIT" name = "nu-command" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-command" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,21 +13,21 @@ version = "0.94.3" bench = false [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.3" } -nu-color-config = { path = "../nu-color-config", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-glob = { path = "../nu-glob", version = "0.94.3" } -nu-json = { path = "../nu-json", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-system = { path = "../nu-system", version = "0.94.3" } -nu-table = { path = "../nu-table", version = "0.94.3" } -nu-term-grid = { path = "../nu-term-grid", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.95.0" } +nu-color-config = { path = "../nu-color-config", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-glob = { path = "../nu-glob", version = "0.95.0" } +nu-json = { path = "../nu-json", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-system = { path = "../nu-system", version = "0.95.0" } +nu-table = { path = "../nu-table", version = "0.95.0" } +nu-term-grid = { path = "../nu-term-grid", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } nu-ansi-term = { workspace = true } -nuon = { path = "../nuon", version = "0.94.3" } +nuon = { path = "../nuon", version = "0.95.0" } alphanumeric-sort = { workspace = true } base64 = { workspace = true } @@ -136,8 +136,8 @@ sqlite = ["rusqlite"] trash-support = ["trash"] [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } dirs-next = { workspace = true } mockito = { workspace = true, default-features = false } @@ -145,4 +145,4 @@ quickcheck = { workspace = true } quickcheck_macros = { workspace = true } rstest = { workspace = true, default-features = false } pretty_assertions = { workspace = true } -tempfile = { workspace = true } +tempfile = { workspace = true } \ No newline at end of file diff --git a/crates/nu-derive-value/Cargo.toml b/crates/nu-derive-value/Cargo.toml index 45395b2ddb..37698ccaeb 100644 --- a/crates/nu-derive-value/Cargo.toml +++ b/crates/nu-derive-value/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" license = "MIT" name = "nu-derive-value" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-derive-value" -version = "0.94.3" +version = "0.95.0" [lib] proc-macro = true @@ -18,4 +18,4 @@ proc-macro2 = { workspace = true } syn = { workspace = true } quote = { workspace = true } proc-macro-error = { workspace = true } -convert_case = { workspace = true } +convert_case = { workspace = true } \ No newline at end of file diff --git a/crates/nu-engine/Cargo.toml b/crates/nu-engine/Cargo.toml index fae2b3eff4..7c815d4c72 100644 --- a/crates/nu-engine/Cargo.toml +++ b/crates/nu-engine/Cargo.toml @@ -5,16 +5,16 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-engine" edition = "2021" license = "MIT" name = "nu-engine" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", features = ["plugin"], version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-glob = { path = "../nu-glob", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", features = ["plugin"], version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-glob = { path = "../nu-glob", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } [features] -plugin = [] +plugin = [] \ No newline at end of file diff --git a/crates/nu-explore/Cargo.toml b/crates/nu-explore/Cargo.toml index dc17e6087d..ac0fe732da 100644 --- a/crates/nu-explore/Cargo.toml +++ b/crates/nu-explore/Cargo.toml @@ -5,21 +5,21 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-explore" edition = "2021" license = "MIT" name = "nu-explore" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-color-config = { path = "../nu-color-config", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-table = { path = "../nu-table", version = "0.94.3" } -nu-json = { path = "../nu-json", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-color-config = { path = "../nu-color-config", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-table = { path = "../nu-table", version = "0.95.0" } +nu-json = { path = "../nu-json", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } nu-ansi-term = { workspace = true } -nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.3" } +nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.95.0" } anyhow = { workspace = true } log = { workspace = true } @@ -32,4 +32,4 @@ ansi-str = { workspace = true } unicode-width = { workspace = true } lscolors = { workspace = true, default-features = false, features = [ "nu-ansi-term", -] } +] } \ No newline at end of file diff --git a/crates/nu-glob/Cargo.toml b/crates/nu-glob/Cargo.toml index 3e0dbfbd12..b1386d1f7b 100644 --- a/crates/nu-glob/Cargo.toml +++ b/crates/nu-glob/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nu-glob" -version = "0.94.3" +version = "0.95.0" authors = ["The Nushell Project Developers", "The Rust Project Developers"] license = "MIT/Apache-2.0" description = """ @@ -14,4 +14,4 @@ categories = ["filesystem"] bench = false [dev-dependencies] -doc-comment = "0.3" +doc-comment = "0.3" \ No newline at end of file diff --git a/crates/nu-json/Cargo.toml b/crates/nu-json/Cargo.toml index 9d348d00d4..27db574785 100644 --- a/crates/nu-json/Cargo.toml +++ b/crates/nu-json/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-json" edition = "2021" license = "MIT" name = "nu-json" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -23,5 +23,5 @@ serde = { workspace = true } serde_json = { workspace = true } [dev-dependencies] -# nu-path = { path="../nu-path", version = "0.94.3" } -# serde_json = "1.0" +# nu-path = { path="../nu-path", version = "0.95.0" } +# serde_json = "1.0" \ No newline at end of file diff --git a/crates/nu-lsp/Cargo.toml b/crates/nu-lsp/Cargo.toml index c4e495f040..2384d46116 100644 --- a/crates/nu-lsp/Cargo.toml +++ b/crates/nu-lsp/Cargo.toml @@ -3,14 +3,14 @@ authors = ["The Nushell Project Developers"] description = "Nushell's integrated LSP server" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-lsp" name = "nu-lsp" -version = "0.94.3" +version = "0.95.0" edition = "2021" license = "MIT" [dependencies] -nu-cli = { path = "../nu-cli", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } +nu-cli = { path = "../nu-cli", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } reedline = { workspace = true } @@ -23,8 +23,8 @@ serde = { workspace = true } serde_json = { workspace = true } [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } -nu-command = { path = "../nu-command", version = "0.94.3" } -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } +nu-command = { path = "../nu-command", version = "0.95.0" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } -assert-json-diff = "2.0" +assert-json-diff = "2.0" \ No newline at end of file diff --git a/crates/nu-parser/Cargo.toml b/crates/nu-parser/Cargo.toml index 742009424a..5ca1a59d0c 100644 --- a/crates/nu-parser/Cargo.toml +++ b/crates/nu-parser/Cargo.toml @@ -5,17 +5,17 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-parser" edition = "2021" license = "MIT" name = "nu-parser" -version = "0.94.3" +version = "0.95.0" exclude = ["/fuzz"] [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } bytesize = { workspace = true } chrono = { default-features = false, features = ['std'], workspace = true } @@ -27,4 +27,4 @@ serde_json = { workspace = true } rstest = { workspace = true, default-features = false } [features] -plugin = ["nu-plugin-engine"] +plugin = ["nu-plugin-engine"] \ No newline at end of file diff --git a/crates/nu-path/Cargo.toml b/crates/nu-path/Cargo.toml index e3c84acdb3..cf716b4571 100644 --- a/crates/nu-path/Cargo.toml +++ b/crates/nu-path/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-path" edition = "2021" license = "MIT" name = "nu-path" -version = "0.94.3" +version = "0.95.0" exclude = ["/fuzz"] [lib] @@ -18,4 +18,4 @@ dirs-next = { workspace = true } omnipath = { workspace = true } [target.'cfg(all(unix, not(target_os = "macos"), not(target_os = "android")))'.dependencies] -pwd = { workspace = true } +pwd = { workspace = true } \ No newline at end of file diff --git a/crates/nu-plugin-core/Cargo.toml b/crates/nu-plugin-core/Cargo.toml index 965b09d085..3e56d0f8e1 100644 --- a/crates/nu-plugin-core/Cargo.toml +++ b/crates/nu-plugin-core/Cargo.toml @@ -5,14 +5,14 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-core edition = "2021" license = "MIT" name = "nu-plugin-core" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.3", default-features = false } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.95.0", default-features = false } rmp-serde = { workspace = true } serde = { workspace = true } @@ -25,4 +25,4 @@ default = ["local-socket"] local-socket = ["interprocess", "nu-plugin-protocol/local-socket"] [target.'cfg(target_os = "windows")'.dependencies] -windows = { workspace = true } +windows = { workspace = true } \ No newline at end of file diff --git a/crates/nu-plugin-engine/Cargo.toml b/crates/nu-plugin-engine/Cargo.toml index 95c0298c09..5de92d1560 100644 --- a/crates/nu-plugin-engine/Cargo.toml +++ b/crates/nu-plugin-engine/Cargo.toml @@ -5,17 +5,17 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-engi edition = "2021" license = "MIT" name = "nu-plugin-engine" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-system = { path = "../nu-system", version = "0.94.3" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.3" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.3", default-features = false } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-system = { path = "../nu-system", version = "0.95.0" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.95.0" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.95.0", default-features = false } serde = { workspace = true } log = { workspace = true } @@ -31,4 +31,4 @@ local-socket = ["nu-plugin-core/local-socket"] windows = { workspace = true, features = [ # For setting process creation flags "Win32_System_Threading", -] } +] } \ No newline at end of file diff --git a/crates/nu-plugin-protocol/Cargo.toml b/crates/nu-plugin-protocol/Cargo.toml index 41c8a7c535..23bd524734 100644 --- a/crates/nu-plugin-protocol/Cargo.toml +++ b/crates/nu-plugin-protocol/Cargo.toml @@ -5,14 +5,14 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-prot edition = "2021" license = "MIT" name = "nu-plugin-protocol" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } +nu-utils = { path = "../nu-utils", version = "0.95.0" } bincode = "1.3" serde = { workspace = true, features = ["derive"] } @@ -21,4 +21,4 @@ typetag = "0.2" [features] default = ["local-socket"] -local-socket = [] +local-socket = [] \ No newline at end of file diff --git a/crates/nu-plugin-test-support/Cargo.toml b/crates/nu-plugin-test-support/Cargo.toml index bc390d3994..b7220da898 100644 --- a/crates/nu-plugin-test-support/Cargo.toml +++ b/crates/nu-plugin-test-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nu-plugin-test-support" -version = "0.94.3" +version = "0.95.0" edition = "2021" license = "MIT" description = "Testing support for Nushell plugins" @@ -12,17 +12,17 @@ bench = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3", features = ["plugin"] } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } -nu-parser = { path = "../nu-parser", version = "0.94.3", features = ["plugin"] } -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.3" } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.3" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.3" } -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } +nu-engine = { path = "../nu-engine", version = "0.95.0", features = ["plugin"] } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } +nu-parser = { path = "../nu-parser", version = "0.95.0", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.95.0" } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.95.0" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.95.0" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } nu-ansi-term = { workspace = true } similar = "2.5" [dev-dependencies] typetag = "0.2" -serde = "1.0" +serde = "1.0" \ No newline at end of file diff --git a/crates/nu-plugin/Cargo.toml b/crates/nu-plugin/Cargo.toml index 68b3a7cadd..6f843cf264 100644 --- a/crates/nu-plugin/Cargo.toml +++ b/crates/nu-plugin/Cargo.toml @@ -5,16 +5,16 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin" edition = "2021" license = "MIT" name = "nu-plugin" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.3" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.3", default-features = false } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.95.0" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.95.0", default-features = false } log = { workspace = true } thiserror = "1.0" @@ -29,4 +29,4 @@ local-socket = ["nu-plugin-core/local-socket"] [target.'cfg(target_family = "unix")'.dependencies] # For setting the process group ID (EnterForeground / LeaveForeground) -nix = { workspace = true, default-features = false, features = ["process"] } +nix = { workspace = true, default-features = false, features = ["process"] } \ No newline at end of file diff --git a/crates/nu-pretty-hex/Cargo.toml b/crates/nu-pretty-hex/Cargo.toml index ae5be298aa..2b6a683295 100644 --- a/crates/nu-pretty-hex/Cargo.toml +++ b/crates/nu-pretty-hex/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-pretty-hex" edition = "2021" license = "MIT" name = "nu-pretty-hex" -version = "0.94.3" +version = "0.95.0" [lib] doctest = false @@ -18,4 +18,4 @@ nu-ansi-term = { workspace = true } [dev-dependencies] heapless = { version = "0.8", default-features = false } -rand = "0.8" +rand = "0.8" \ No newline at end of file diff --git a/crates/nu-protocol/Cargo.toml b/crates/nu-protocol/Cargo.toml index 849a968eb8..73637cf292 100644 --- a/crates/nu-protocol/Cargo.toml +++ b/crates/nu-protocol/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-protocol" edition = "2021" license = "MIT" name = "nu-protocol" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,10 +13,10 @@ version = "0.94.3" bench = false [dependencies] -nu-utils = { path = "../nu-utils", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-system = { path = "../nu-system", version = "0.94.3" } -nu-derive-value = { path = "../nu-derive-value", version = "0.94.3" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-system = { path = "../nu-system", version = "0.95.0" } +nu-derive-value = { path = "../nu-derive-value", version = "0.95.0" } brotli = { workspace = true, optional = true } byte-unit = { version = "5.1", features = [ "serde" ] } @@ -47,11 +47,11 @@ plugin = [ serde_json = { workspace = true } strum = "0.26" strum_macros = "0.26" -nu-test-support = { path = "../nu-test-support", version = "0.94.3" } +nu-test-support = { path = "../nu-test-support", version = "0.95.0" } pretty_assertions = { workspace = true } rstest = { workspace = true } tempfile = { workspace = true } os_pipe = { workspace = true } [package.metadata.docs.rs] -all-features = true +all-features = true \ No newline at end of file diff --git a/crates/nu-std/Cargo.toml b/crates/nu-std/Cargo.toml index 660d418097..2617f4656d 100644 --- a/crates/nu-std/Cargo.toml +++ b/crates/nu-std/Cargo.toml @@ -5,12 +5,12 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-std" edition = "2021" license = "MIT" name = "nu-std" -version = "0.94.3" +version = "0.95.0" [dependencies] -nu-parser = { version = "0.94.3", path = "../nu-parser" } -nu-protocol = { version = "0.94.3", path = "../nu-protocol" } -nu-engine = { version = "0.94.3", path = "../nu-engine" } +nu-parser = { version = "0.95.0", path = "../nu-parser" } +nu-protocol = { version = "0.95.0", path = "../nu-protocol" } +nu-engine = { version = "0.95.0", path = "../nu-engine" } miette = { workspace = true, features = ["fancy-no-backtrace"] } -log = "0.4" +log = "0.4" \ No newline at end of file diff --git a/crates/nu-system/Cargo.toml b/crates/nu-system/Cargo.toml index 3e888dba49..b9b23af6c3 100644 --- a/crates/nu-system/Cargo.toml +++ b/crates/nu-system/Cargo.toml @@ -3,7 +3,7 @@ authors = ["The Nushell Project Developers", "procs creators"] description = "Nushell system querying" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-system" name = "nu-system" -version = "0.94.3" +version = "0.95.0" edition = "2021" license = "MIT" @@ -45,4 +45,4 @@ windows = { workspace = true, features = [ "Win32_System_SystemInformation", "Win32_System_Threading", "Win32_UI_Shell", -]} +]} \ No newline at end of file diff --git a/crates/nu-table/Cargo.toml b/crates/nu-table/Cargo.toml index af7cf19f36..dcc4c294d6 100644 --- a/crates/nu-table/Cargo.toml +++ b/crates/nu-table/Cargo.toml @@ -5,20 +5,20 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-table" edition = "2021" license = "MIT" name = "nu-table" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-color-config = { path = "../nu-color-config", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-color-config = { path = "../nu-color-config", version = "0.95.0" } nu-ansi-term = { workspace = true } once_cell = { workspace = true } fancy-regex = { workspace = true } tabled = { workspace = true, features = ["color"], default-features = false } [dev-dependencies] -# nu-test-support = { path="../nu-test-support", version = "0.94.3" } +# nu-test-support = { path="../nu-test-support", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu-term-grid/Cargo.toml b/crates/nu-term-grid/Cargo.toml index 47f6724b53..a577e6cb24 100644 --- a/crates/nu-term-grid/Cargo.toml +++ b/crates/nu-term-grid/Cargo.toml @@ -5,12 +5,12 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-term-grid" edition = "2021" license = "MIT" name = "nu-term-grid" -version = "0.94.3" +version = "0.95.0" [lib] bench = false [dependencies] -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } -unicode-width = { workspace = true } +unicode-width = { workspace = true } \ No newline at end of file diff --git a/crates/nu-test-support/Cargo.toml b/crates/nu-test-support/Cargo.toml index 86a1bf35e7..769ae44d00 100644 --- a/crates/nu-test-support/Cargo.toml +++ b/crates/nu-test-support/Cargo.toml @@ -5,17 +5,17 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-test-suppor edition = "2021" license = "MIT" name = "nu-test-support" -version = "0.94.3" +version = "0.95.0" [lib] doctest = false bench = false [dependencies] -nu-path = { path = "../nu-path", version = "0.94.3" } -nu-glob = { path = "../nu-glob", version = "0.94.3" } -nu-utils = { path = "../nu-utils", version = "0.94.3" } +nu-path = { path = "../nu-path", version = "0.95.0" } +nu-glob = { path = "../nu-glob", version = "0.95.0" } +nu-utils = { path = "../nu-utils", version = "0.95.0" } num-format = { workspace = true } which = { workspace = true } -tempfile = { workspace = true } +tempfile = { workspace = true } \ No newline at end of file diff --git a/crates/nu-utils/Cargo.toml b/crates/nu-utils/Cargo.toml index 0677f655d0..54821d0252 100644 --- a/crates/nu-utils/Cargo.toml +++ b/crates/nu-utils/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" license = "MIT" name = "nu-utils" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-utils" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [[bin]] @@ -29,4 +29,4 @@ unicase = "2.7.0" crossterm_winapi = "0.9" [target.'cfg(unix)'.dependencies] -nix = { workspace = true, default-features = false, features = ["user", "fs"] } +nix = { workspace = true, default-features = false, features = ["user", "fs"] } \ No newline at end of file diff --git a/crates/nu-utils/src/sample_config/default_config.nu b/crates/nu-utils/src/sample_config/default_config.nu index 099adcd065..0980b487e2 100644 --- a/crates/nu-utils/src/sample_config/default_config.nu +++ b/crates/nu-utils/src/sample_config/default_config.nu @@ -1,6 +1,6 @@ # Nushell Config File # -# version = "0.94.3" +# version = "0.95.0" # For more information on defining custom themes, see # https://www.nushell.sh/book/coloring_and_theming.html @@ -888,4 +888,4 @@ $env.config = { event: { edit: selectall } } ] -} +} \ No newline at end of file diff --git a/crates/nu-utils/src/sample_config/default_env.nu b/crates/nu-utils/src/sample_config/default_env.nu index effe76c98a..e5c17e40de 100644 --- a/crates/nu-utils/src/sample_config/default_env.nu +++ b/crates/nu-utils/src/sample_config/default_env.nu @@ -1,6 +1,6 @@ # Nushell Environment Config File # -# version = "0.94.3" +# version = "0.95.0" def create_left_prompt [] { let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { @@ -98,4 +98,4 @@ $env.NU_PLUGIN_DIRS = [ # $env.PATH = ($env.PATH | uniq) # To load from a custom file you can use: -# source ($nu.default-config-dir | path join 'custom.nu') +# source ($nu.default-config-dir | path join 'custom.nu') \ No newline at end of file diff --git a/crates/nu_plugin_custom_values/Cargo.toml b/crates/nu_plugin_custom_values/Cargo.toml index 2791cdaa6f..0b8c899bb3 100644 --- a/crates/nu_plugin_custom_values/Cargo.toml +++ b/crates/nu_plugin_custom_values/Cargo.toml @@ -10,10 +10,10 @@ name = "nu_plugin_custom_values" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } serde = { workspace = true, default-features = false } typetag = "0.2" [dev-dependencies] -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.3" } +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu_plugin_example/Cargo.toml b/crates/nu_plugin_example/Cargo.toml index b2fd13abd9..9e5dc917f5 100644 --- a/crates/nu_plugin_example/Cargo.toml +++ b/crates/nu_plugin_example/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_exam edition = "2021" license = "MIT" name = "nu_plugin_example" -version = "0.94.3" +version = "0.95.0" [[bin]] name = "nu_plugin_example" @@ -15,9 +15,9 @@ bench = false bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } [dev-dependencies] -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.3" } -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.95.0" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu_plugin_formats/Cargo.toml b/crates/nu_plugin_formats/Cargo.toml index a649a5bc5a..a2c198bcb0 100644 --- a/crates/nu_plugin_formats/Cargo.toml +++ b/crates/nu_plugin_formats/Cargo.toml @@ -5,12 +5,12 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_form edition = "2021" license = "MIT" name = "nu_plugin_formats" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } indexmap = { workspace = true } eml-parser = "0.1" @@ -18,4 +18,4 @@ ical = "0.11" rust-ini = "0.21.0" [dev-dependencies] -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.3" } +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.95.0" } \ No newline at end of file diff --git a/crates/nu_plugin_gstat/Cargo.toml b/crates/nu_plugin_gstat/Cargo.toml index c356f3d7d3..15b601007a 100644 --- a/crates/nu_plugin_gstat/Cargo.toml +++ b/crates/nu_plugin_gstat/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_gsta edition = "2021" license = "MIT" name = "nu_plugin_gstat" -version = "0.94.3" +version = "0.95.0" [lib] doctest = false @@ -16,7 +16,7 @@ name = "nu_plugin_gstat" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } -git2 = "0.19" +git2 = "0.19" \ No newline at end of file diff --git a/crates/nu_plugin_inc/Cargo.toml b/crates/nu_plugin_inc/Cargo.toml index 3701ad49bd..9f2b0e1122 100644 --- a/crates/nu_plugin_inc/Cargo.toml +++ b/crates/nu_plugin_inc/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_inc" edition = "2021" license = "MIT" name = "nu_plugin_inc" -version = "0.94.3" +version = "0.95.0" [lib] doctest = false @@ -16,7 +16,7 @@ name = "nu_plugin_inc" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0", features = ["plugin"] } -semver = "1.0" +semver = "1.0" \ No newline at end of file diff --git a/crates/nu_plugin_nu_example/nu_plugin_nu_example.nu b/crates/nu_plugin_nu_example/nu_plugin_nu_example.nu index 4bfc066815..1fcf6d8eb4 100755 --- a/crates/nu_plugin_nu_example/nu_plugin_nu_example.nu +++ b/crates/nu_plugin_nu_example/nu_plugin_nu_example.nu @@ -6,7 +6,7 @@ # it also allows us to test the plugin interface with something manually implemented in a scripting # language without adding any extra dependencies to our tests. -const NUSHELL_VERSION = "0.94.3" +const NUSHELL_VERSION = "0.95.0" const PLUGIN_VERSION = "0.1.0" # bump if you change commands! def main [--stdio] { @@ -265,4 +265,4 @@ def start_plugin [] { }) | each { from json | handle_input } | ignore -} +} \ No newline at end of file diff --git a/crates/nu_plugin_polars/Cargo.toml b/crates/nu_plugin_polars/Cargo.toml index 98288f3ebf..e5e92822e0 100644 --- a/crates/nu_plugin_polars/Cargo.toml +++ b/crates/nu_plugin_polars/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" license = "MIT" name = "nu_plugin_polars" repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_polars" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -17,9 +17,9 @@ bench = false bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-path = { path = "../nu-path", version = "0.94.3" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-path = { path = "../nu-path", version = "0.95.0" } # Potential dependencies for extras chrono = { workspace = true, features = ["std", "unstable-locales"], default-features = false } @@ -73,9 +73,9 @@ optional = false version = "0.40" [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-command = { path = "../nu-command", version = "0.94.3" } -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.3" } -tempfile.workspace = true +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-command = { path = "../nu-command", version = "0.95.0" } +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.95.0" } +tempfile.workspace = true \ No newline at end of file diff --git a/crates/nu_plugin_python/nu_plugin_python_example.py b/crates/nu_plugin_python/nu_plugin_python_example.py index 80715abf11..14cd28a713 100755 --- a/crates/nu_plugin_python/nu_plugin_python_example.py +++ b/crates/nu_plugin_python/nu_plugin_python_example.py @@ -27,7 +27,7 @@ import sys import json -NUSHELL_VERSION = "0.94.3" +NUSHELL_VERSION = "0.95.0" PLUGIN_VERSION = "0.1.0" # bump if you change commands! @@ -258,4 +258,4 @@ if __name__ == "__main__": if len(sys.argv) == 2 and sys.argv[1] == "--stdio": plugin() else: - print("Run me from inside nushell!") + print("Run me from inside nushell!") \ No newline at end of file diff --git a/crates/nu_plugin_query/Cargo.toml b/crates/nu_plugin_query/Cargo.toml index 20a2a2729d..d044aeac42 100644 --- a/crates/nu_plugin_query/Cargo.toml +++ b/crates/nu_plugin_query/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_quer edition = "2021" license = "MIT" name = "nu_plugin_query" -version = "0.94.3" +version = "0.95.0" [lib] doctest = false @@ -16,10 +16,10 @@ name = "nu_plugin_query" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } +nu-plugin = { path = "../nu-plugin", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } gjson = "0.8" scraper = { default-features = false, version = "0.19" } sxd-document = "0.3" -sxd-xpath = "0.4" +sxd-xpath = "0.4" \ No newline at end of file diff --git a/crates/nu_plugin_stress_internals/Cargo.toml b/crates/nu_plugin_stress_internals/Cargo.toml index 7103d99cda..e4e7f88403 100644 --- a/crates/nu_plugin_stress_internals/Cargo.toml +++ b/crates/nu_plugin_stress_internals/Cargo.toml @@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_stre edition = "2021" license = "MIT" name = "nu_plugin_stress_internals" -version = "0.94.3" +version = "0.95.0" [[bin]] name = "nu_plugin_stress_internals" @@ -16,4 +16,4 @@ bench = false # assumptions about the serialized format serde = { workspace = true } serde_json = { workspace = true } -interprocess = { workspace = true } +interprocess = { workspace = true } \ No newline at end of file diff --git a/crates/nuon/Cargo.toml b/crates/nuon/Cargo.toml index 31c0cdd363..f977598450 100644 --- a/crates/nuon/Cargo.toml +++ b/crates/nuon/Cargo.toml @@ -5,16 +5,16 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nuon" edition = "2021" license = "MIT" name = "nuon" -version = "0.94.3" +version = "0.95.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nu-parser = { path = "../nu-parser", version = "0.94.3" } -nu-protocol = { path = "../nu-protocol", version = "0.94.3" } -nu-engine = { path = "../nu-engine", version = "0.94.3" } +nu-parser = { path = "../nu-parser", version = "0.95.0" } +nu-protocol = { path = "../nu-protocol", version = "0.95.0" } +nu-engine = { path = "../nu-engine", version = "0.95.0" } once_cell = { workspace = true } fancy-regex = { workspace = true } [dev-dependencies] -chrono = { workspace = true } +chrono = { workspace = true } \ No newline at end of file