From 6635b74d9d8d71ae6813a1bfaa3b977f792723a4 Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Mon, 3 Jun 2024 00:28:35 -0700 Subject: [PATCH 1/3] Bump version to `0.94.2` (#13014) Version bump after 0.94.1 patch release. --- Cargo.lock | 72 +++++++++---------- Cargo.toml | 40 +++++------ crates/nu-cli/Cargo.toml | 24 +++---- crates/nu-cmd-base/Cargo.toml | 10 +-- crates/nu-cmd-extra/Cargo.toml | 22 +++--- crates/nu-cmd-lang/Cargo.toml | 10 +-- crates/nu-cmd-plugin/Cargo.toml | 10 +-- crates/nu-color-config/Cargo.toml | 10 +-- crates/nu-command/Cargo.toml | 34 ++++----- crates/nu-engine/Cargo.toml | 10 +-- crates/nu-explore/Cargo.toml | 18 ++--- crates/nu-glob/Cargo.toml | 2 +- crates/nu-json/Cargo.toml | 4 +- crates/nu-lsp/Cargo.toml | 14 ++-- crates/nu-parser/Cargo.toml | 10 +-- crates/nu-path/Cargo.toml | 2 +- crates/nu-plugin-core/Cargo.toml | 6 +- crates/nu-plugin-engine/Cargo.toml | 12 ++-- crates/nu-plugin-protocol/Cargo.toml | 6 +- crates/nu-plugin-test-support/Cargo.toml | 18 ++--- crates/nu-plugin/Cargo.toml | 10 +-- crates/nu-pretty-hex/Cargo.toml | 2 +- crates/nu-protocol/Cargo.toml | 10 +-- crates/nu-std/Cargo.toml | 8 +-- crates/nu-system/Cargo.toml | 2 +- crates/nu-table/Cargo.toml | 12 ++-- crates/nu-term-grid/Cargo.toml | 4 +- crates/nu-test-support/Cargo.toml | 8 +-- crates/nu-utils/Cargo.toml | 2 +- .../src/sample_config/default_config.nu | 2 +- .../nu-utils/src/sample_config/default_env.nu | 2 +- 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 | 6 +- crates/nu_plugin_inc/Cargo.toml | 6 +- .../nu_plugin_nu_example.nu | 2 +- crates/nu_plugin_polars/Cargo.toml | 18 ++--- .../nu_plugin_python_example.py | 2 +- crates/nu_plugin_query/Cargo.toml | 6 +- crates/nu_plugin_stress_internals/Cargo.toml | 2 +- crates/nuon/Cargo.toml | 8 +-- 42 files changed, 235 insertions(+), 235 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d339ec7da..23cafeefda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2770,7 +2770,7 @@ dependencies = [ [[package]] name = "nu" -version = "0.94.1" +version = "0.94.2" dependencies = [ "assert_cmd", "crossterm", @@ -2823,7 +2823,7 @@ dependencies = [ [[package]] name = "nu-cli" -version = "0.94.1" +version = "0.94.2" dependencies = [ "chrono", "crossterm", @@ -2858,7 +2858,7 @@ dependencies = [ [[package]] name = "nu-cmd-base" -version = "0.94.1" +version = "0.94.2" dependencies = [ "indexmap", "miette", @@ -2870,7 +2870,7 @@ dependencies = [ [[package]] name = "nu-cmd-extra" -version = "0.94.1" +version = "0.94.2" dependencies = [ "fancy-regex", "heck 0.5.0", @@ -2895,7 +2895,7 @@ dependencies = [ [[package]] name = "nu-cmd-lang" -version = "0.94.1" +version = "0.94.2" dependencies = [ "itertools 0.12.1", "nu-engine", @@ -2907,7 +2907,7 @@ dependencies = [ [[package]] name = "nu-cmd-plugin" -version = "0.94.1" +version = "0.94.2" dependencies = [ "itertools 0.12.1", "nu-engine", @@ -2918,7 +2918,7 @@ dependencies = [ [[package]] name = "nu-color-config" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-ansi-term", "nu-engine", @@ -2930,7 +2930,7 @@ dependencies = [ [[package]] name = "nu-command" -version = "0.94.1" +version = "0.94.2" dependencies = [ "alphanumeric-sort", "base64 0.22.1", @@ -3039,7 +3039,7 @@ dependencies = [ [[package]] name = "nu-engine" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-glob", "nu-path", @@ -3049,7 +3049,7 @@ dependencies = [ [[package]] name = "nu-explore" -version = "0.94.1" +version = "0.94.2" dependencies = [ "ansi-str", "anyhow", @@ -3074,14 +3074,14 @@ dependencies = [ [[package]] name = "nu-glob" -version = "0.94.1" +version = "0.94.2" dependencies = [ "doc-comment", ] [[package]] name = "nu-json" -version = "0.94.1" +version = "0.94.2" dependencies = [ "linked-hash-map", "num-traits", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "nu-lsp" -version = "0.94.1" +version = "0.94.2" dependencies = [ "assert-json-diff", "crossbeam-channel", @@ -3112,7 +3112,7 @@ dependencies = [ [[package]] name = "nu-parser" -version = "0.94.1" +version = "0.94.2" dependencies = [ "bytesize", "chrono", @@ -3128,7 +3128,7 @@ dependencies = [ [[package]] name = "nu-path" -version = "0.94.1" +version = "0.94.2" dependencies = [ "dirs-next", "omnipath", @@ -3137,7 +3137,7 @@ dependencies = [ [[package]] name = "nu-plugin" -version = "0.94.1" +version = "0.94.2" dependencies = [ "log", "nix", @@ -3152,7 +3152,7 @@ dependencies = [ [[package]] name = "nu-plugin-core" -version = "0.94.1" +version = "0.94.2" dependencies = [ "interprocess", "log", @@ -3166,7 +3166,7 @@ dependencies = [ [[package]] name = "nu-plugin-engine" -version = "0.94.1" +version = "0.94.2" dependencies = [ "log", "nu-engine", @@ -3181,7 +3181,7 @@ dependencies = [ [[package]] name = "nu-plugin-protocol" -version = "0.94.1" +version = "0.94.2" dependencies = [ "bincode", "nu-protocol", @@ -3193,7 +3193,7 @@ dependencies = [ [[package]] name = "nu-plugin-test-support" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-ansi-term", "nu-cmd-lang", @@ -3211,7 +3211,7 @@ dependencies = [ [[package]] name = "nu-pretty-hex" -version = "0.94.1" +version = "0.94.2" dependencies = [ "heapless", "nu-ansi-term", @@ -3220,7 +3220,7 @@ dependencies = [ [[package]] name = "nu-protocol" -version = "0.94.1" +version = "0.94.2" dependencies = [ "brotli 5.0.0", "byte-unit", @@ -3251,7 +3251,7 @@ dependencies = [ [[package]] name = "nu-std" -version = "0.94.1" +version = "0.94.2" dependencies = [ "log", "miette", @@ -3262,7 +3262,7 @@ dependencies = [ [[package]] name = "nu-system" -version = "0.94.1" +version = "0.94.2" dependencies = [ "chrono", "itertools 0.12.1", @@ -3280,7 +3280,7 @@ dependencies = [ [[package]] name = "nu-table" -version = "0.94.1" +version = "0.94.2" dependencies = [ "fancy-regex", "nu-ansi-term", @@ -3294,7 +3294,7 @@ dependencies = [ [[package]] name = "nu-term-grid" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-utils", "unicode-width", @@ -3302,7 +3302,7 @@ dependencies = [ [[package]] name = "nu-test-support" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-glob", "nu-path", @@ -3314,7 +3314,7 @@ dependencies = [ [[package]] name = "nu-utils" -version = "0.94.1" +version = "0.94.2" dependencies = [ "crossterm_winapi", "log", @@ -3340,7 +3340,7 @@ dependencies = [ [[package]] name = "nu_plugin_example" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-cmd-lang", "nu-plugin", @@ -3350,7 +3350,7 @@ dependencies = [ [[package]] name = "nu_plugin_formats" -version = "0.94.1" +version = "0.94.2" dependencies = [ "eml-parser", "ical", @@ -3363,7 +3363,7 @@ dependencies = [ [[package]] name = "nu_plugin_gstat" -version = "0.94.1" +version = "0.94.2" dependencies = [ "git2", "nu-plugin", @@ -3372,7 +3372,7 @@ dependencies = [ [[package]] name = "nu_plugin_inc" -version = "0.94.1" +version = "0.94.2" dependencies = [ "nu-plugin", "nu-protocol", @@ -3381,7 +3381,7 @@ dependencies = [ [[package]] name = "nu_plugin_polars" -version = "0.94.1" +version = "0.94.2" dependencies = [ "chrono", "chrono-tz 0.9.0", @@ -3412,7 +3412,7 @@ dependencies = [ [[package]] name = "nu_plugin_query" -version = "0.94.1" +version = "0.94.2" dependencies = [ "gjson", "nu-plugin", @@ -3424,7 +3424,7 @@ dependencies = [ [[package]] name = "nu_plugin_stress_internals" -version = "0.94.1" +version = "0.94.2" dependencies = [ "interprocess", "serde", @@ -3550,7 +3550,7 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nuon" -version = "0.94.1" +version = "0.94.2" dependencies = [ "chrono", "fancy-regex", diff --git a/Cargo.toml b/Cargo.toml index a8576baa95..ce9157efb4 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.1" +version = "0.94.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -174,22 +174,22 @@ windows = "0.54" winreg = "0.52" [dependencies] -nu-cli = { path = "./crates/nu-cli", version = "0.94.1" } -nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.94.1" } -nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.94.1" } -nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.94.1", optional = true } -nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.94.1" } -nu-command = { path = "./crates/nu-command", version = "0.94.1" } -nu-engine = { path = "./crates/nu-engine", version = "0.94.1" } -nu-explore = { path = "./crates/nu-explore", version = "0.94.1" } -nu-lsp = { path = "./crates/nu-lsp/", version = "0.94.1" } -nu-parser = { path = "./crates/nu-parser", version = "0.94.1" } -nu-path = { path = "./crates/nu-path", version = "0.94.1" } -nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.94.1" } -nu-protocol = { path = "./crates/nu-protocol", version = "0.94.1" } -nu-std = { path = "./crates/nu-std", version = "0.94.1" } -nu-system = { path = "./crates/nu-system", version = "0.94.1" } -nu-utils = { path = "./crates/nu-utils", version = "0.94.1" } +nu-cli = { path = "./crates/nu-cli", version = "0.94.2" } +nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.94.2" } +nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.94.2" } +nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.94.2", optional = true } +nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.94.2" } +nu-command = { path = "./crates/nu-command", version = "0.94.2" } +nu-engine = { path = "./crates/nu-engine", version = "0.94.2" } +nu-explore = { path = "./crates/nu-explore", version = "0.94.2" } +nu-lsp = { path = "./crates/nu-lsp/", version = "0.94.2" } +nu-parser = { path = "./crates/nu-parser", version = "0.94.2" } +nu-path = { path = "./crates/nu-path", version = "0.94.2" } +nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.94.2" } +nu-protocol = { path = "./crates/nu-protocol", version = "0.94.2" } +nu-std = { path = "./crates/nu-std", version = "0.94.2" } +nu-system = { path = "./crates/nu-system", version = "0.94.2" } +nu-utils = { path = "./crates/nu-utils", version = "0.94.2" } reedline = { workspace = true, features = ["bashisms", "sqlite"] } @@ -218,9 +218,9 @@ nix = { workspace = true, default-features = false, features = [ ] } [dev-dependencies] -nu-test-support = { path = "./crates/nu-test-support", version = "0.94.1" } -nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.94.1" } -nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.94.1" } +nu-test-support = { path = "./crates/nu-test-support", version = "0.94.2" } +nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.94.2" } +nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.94.2" } assert_cmd = "2.0" dirs-next = { workspace = true } tango-bench = "0.5" diff --git a/crates/nu-cli/Cargo.toml b/crates/nu-cli/Cargo.toml index 516afd9f0b..0d82fa4aae 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.1" +version = "0.94.2" [lib] bench = false [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } -nu-command = { path = "../nu-command", version = "0.94.1" } -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } +nu-command = { path = "../nu-command", version = "0.94.2" } +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } rstest = { workspace = true, default-features = false } tempfile = { workspace = true } [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.1", optional = true } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } -nu-color-config = { path = "../nu-color-config", version = "0.94.1" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.2", optional = true } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } +nu-color-config = { path = "../nu-color-config", version = "0.94.2" } nu-ansi-term = { workspace = true } reedline = { workspace = true, features = ["bashisms", "sqlite"] } diff --git a/crates/nu-cmd-base/Cargo.toml b/crates/nu-cmd-base/Cargo.toml index 1dcd95ba94..858ff55e2d 100644 --- a/crates/nu-cmd-base/Cargo.toml +++ b/crates/nu-cmd-base/Cargo.toml @@ -5,15 +5,15 @@ edition = "2021" license = "MIT" name = "nu-cmd-base" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-base" -version = "0.94.1" +version = "0.94.2" # 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.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } indexmap = { workspace = true } miette = { workspace = true } diff --git a/crates/nu-cmd-extra/Cargo.toml b/crates/nu-cmd-extra/Cargo.toml index 9e6270163d..b03c7911ed 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.1" +version = "0.94.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,13 +13,13 @@ version = "0.94.1" bench = false [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-json = { version = "0.94.1", path = "../nu-json" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-pretty-hex = { version = "0.94.1", path = "../nu-pretty-hex" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-json = { version = "0.94.2", path = "../nu-json" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-pretty-hex = { version = "0.94.2", path = "../nu-pretty-hex" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } # Potential dependencies for extras heck = { workspace = true } @@ -37,6 +37,6 @@ extra = ["default"] default = [] [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } -nu-command = { path = "../nu-command", version = "0.94.1" } -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } \ No newline at end of file +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } +nu-command = { path = "../nu-command", version = "0.94.2" } +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu-cmd-lang/Cargo.toml b/crates/nu-cmd-lang/Cargo.toml index f7b43521d1..ad94c331d8 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } itertools = { workspace = true } shadow-rs = { version = "0.28", default-features = false } diff --git a/crates/nu-cmd-plugin/Cargo.toml b/crates/nu-cmd-plugin/Cargo.toml index f461f6bf04..62ed6851b5 100644 --- a/crates/nu-cmd-plugin/Cargo.toml +++ b/crates/nu-cmd-plugin/Cargo.toml @@ -5,15 +5,15 @@ edition = "2021" license = "MIT" name = "nu-cmd-plugin" repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-plugin" -version = "0.94.1" +version = "0.94.2" # 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.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.1" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", features = ["plugin"] } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.2" } itertools = { workspace = true } diff --git a/crates/nu-color-config/Cargo.toml b/crates/nu-color-config/Cargo.toml index 34f0ded963..6268acf6f6 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-json = { path = "../nu-json", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-json = { path = "../nu-json", version = "0.94.2" } nu-ansi-term = { workspace = true } serde = { workspace = true, features = ["derive"] } [dev-dependencies] -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } \ No newline at end of file +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu-command/Cargo.toml b/crates/nu-command/Cargo.toml index 25665cfc33..1a88a24e5e 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.1" +version = "0.94.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,21 +13,21 @@ version = "0.94.1" bench = false [dependencies] -nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.1" } -nu-color-config = { path = "../nu-color-config", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-glob = { path = "../nu-glob", version = "0.94.1" } -nu-json = { path = "../nu-json", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-system = { path = "../nu-system", version = "0.94.1" } -nu-table = { path = "../nu-table", version = "0.94.1" } -nu-term-grid = { path = "../nu-term-grid", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-cmd-base = { path = "../nu-cmd-base", version = "0.94.2" } +nu-color-config = { path = "../nu-color-config", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-glob = { path = "../nu-glob", version = "0.94.2" } +nu-json = { path = "../nu-json", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-system = { path = "../nu-system", version = "0.94.2" } +nu-table = { path = "../nu-table", version = "0.94.2" } +nu-term-grid = { path = "../nu-term-grid", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } nu-ansi-term = { workspace = true } -nuon = { path = "../nuon", version = "0.94.1" } +nuon = { path = "../nuon", version = "0.94.2" } alphanumeric-sort = { workspace = true } base64 = { workspace = true } @@ -137,8 +137,8 @@ trash-support = ["trash"] which-support = [] [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } dirs-next = { workspace = true } mockito = { workspace = true, default-features = false } diff --git a/crates/nu-engine/Cargo.toml b/crates/nu-engine/Cargo.toml index 7bf5ffe9d5..d8a90fb70e 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", features = ["plugin"], version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-glob = { path = "../nu-glob", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", features = ["plugin"], version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-glob = { path = "../nu-glob", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } [features] plugin = [] \ No newline at end of file diff --git a/crates/nu-explore/Cargo.toml b/crates/nu-explore/Cargo.toml index 006e301859..0837d9d683 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-color-config = { path = "../nu-color-config", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-table = { path = "../nu-table", version = "0.94.1" } -nu-json = { path = "../nu-json", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-color-config = { path = "../nu-color-config", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-table = { path = "../nu-table", version = "0.94.2" } +nu-json = { path = "../nu-json", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } nu-ansi-term = { workspace = true } -nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.1" } +nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.94.2" } anyhow = { workspace = true } log = { workspace = true } diff --git a/crates/nu-glob/Cargo.toml b/crates/nu-glob/Cargo.toml index c6bfd7e493..d7568f7b2d 100644 --- a/crates/nu-glob/Cargo.toml +++ b/crates/nu-glob/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nu-glob" -version = "0.94.1" +version = "0.94.2" authors = ["The Nushell Project Developers", "The Rust Project Developers"] license = "MIT/Apache-2.0" description = """ diff --git a/crates/nu-json/Cargo.toml b/crates/nu-json/Cargo.toml index 5a0806d7ca..63a80f4b91 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.1" +version = "0.94.2" # 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.1" } +# nu-path = { path="../nu-path", version = "0.94.2" } # 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 92f468fdbd..0732862bff 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.1" +version = "0.94.2" edition = "2021" license = "MIT" [dependencies] -nu-cli = { path = "../nu-cli", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } +nu-cli = { path = "../nu-cli", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } 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.1" } -nu-command = { path = "../nu-command", version = "0.94.1" } -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } +nu-command = { path = "../nu-command", version = "0.94.2" } +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } 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 feb379d091..fa840fc483 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.1" +version = "0.94.2" exclude = ["/fuzz"] [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } bytesize = { workspace = true } chrono = { default-features = false, features = ['std'], workspace = true } diff --git a/crates/nu-path/Cargo.toml b/crates/nu-path/Cargo.toml index 1f3822089c..bdd0157e4f 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.1" +version = "0.94.2" exclude = ["/fuzz"] [lib] diff --git a/crates/nu-plugin-core/Cargo.toml b/crates/nu-plugin-core/Cargo.toml index 4040095a2a..580e0287e2 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.1", default-features = false } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.2", default-features = false } rmp-serde = { workspace = true } serde = { workspace = true } diff --git a/crates/nu-plugin-engine/Cargo.toml b/crates/nu-plugin-engine/Cargo.toml index 715c2b7f74..50fe40ab0a 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-system = { path = "../nu-system", version = "0.94.1" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.1" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.1", default-features = false } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-system = { path = "../nu-system", version = "0.94.2" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.2" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.2", default-features = false } serde = { workspace = true } log = { workspace = true } diff --git a/crates/nu-plugin-protocol/Cargo.toml b/crates/nu-plugin-protocol/Cargo.toml index 8fe1c1102e..b52655a4f1 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", features = ["plugin"] } +nu-utils = { path = "../nu-utils", version = "0.94.2" } bincode = "1.3" serde = { workspace = true, features = ["derive"] } diff --git a/crates/nu-plugin-test-support/Cargo.toml b/crates/nu-plugin-test-support/Cargo.toml index 32df904645..b5ef1e4c02 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.1" +version = "0.94.2" edition = "2021" license = "MIT" description = "Testing support for Nushell plugins" @@ -12,14 +12,14 @@ 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.1", features = ["plugin"] } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } -nu-parser = { path = "../nu-parser", version = "0.94.1", features = ["plugin"] } -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.1" } -nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.1" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.1" } -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } +nu-engine = { path = "../nu-engine", version = "0.94.2", features = ["plugin"] } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", features = ["plugin"] } +nu-parser = { path = "../nu-parser", version = "0.94.2", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.2" } +nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.94.2" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.2" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } nu-ansi-term = { workspace = true } similar = "2.5" diff --git a/crates/nu-plugin/Cargo.toml b/crates/nu-plugin/Cargo.toml index 150ab6666d..0a9a169474 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.1" } -nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.1", default-features = false } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.94.2" } +nu-plugin-core = { path = "../nu-plugin-core", version = "0.94.2", default-features = false } log = { workspace = true } thiserror = "1.0" diff --git a/crates/nu-pretty-hex/Cargo.toml b/crates/nu-pretty-hex/Cargo.toml index 639ceb0edd..152d03df72 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.1" +version = "0.94.2" [lib] doctest = false diff --git a/crates/nu-protocol/Cargo.toml b/crates/nu-protocol/Cargo.toml index 8b2870a378..2ccd0a07ce 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.1" +version = "0.94.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,9 +13,9 @@ version = "0.94.1" bench = false [dependencies] -nu-utils = { path = "../nu-utils", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-system = { path = "../nu-system", version = "0.94.1" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-system = { path = "../nu-system", version = "0.94.2" } brotli = { workspace = true, optional = true } byte-unit = { version = "5.1", features = [ "serde" ] } @@ -45,7 +45,7 @@ plugin = [ serde_json = { workspace = true } strum = "0.26" strum_macros = "0.26" -nu-test-support = { path = "../nu-test-support", version = "0.94.1" } +nu-test-support = { path = "../nu-test-support", version = "0.94.2" } pretty_assertions = { workspace = true } rstest = { workspace = true } tempfile = { workspace = true } diff --git a/crates/nu-std/Cargo.toml b/crates/nu-std/Cargo.toml index f5c6790c52..4e5850c3fb 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.1" +version = "0.94.2" [dependencies] -nu-parser = { version = "0.94.1", path = "../nu-parser" } -nu-protocol = { version = "0.94.1", path = "../nu-protocol" } -nu-engine = { version = "0.94.1", path = "../nu-engine" } +nu-parser = { version = "0.94.2", path = "../nu-parser" } +nu-protocol = { version = "0.94.2", path = "../nu-protocol" } +nu-engine = { version = "0.94.2", path = "../nu-engine" } miette = { workspace = true, features = ["fancy-no-backtrace"] } log = "0.4" \ No newline at end of file diff --git a/crates/nu-system/Cargo.toml b/crates/nu-system/Cargo.toml index 33305d07bc..17e621db90 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.1" +version = "0.94.2" edition = "2021" license = "MIT" diff --git a/crates/nu-table/Cargo.toml b/crates/nu-table/Cargo.toml index 6fcb1ffce6..fe1de742d9 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-color-config = { path = "../nu-color-config", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-color-config = { path = "../nu-color-config", version = "0.94.2" } 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.1" } \ No newline at end of file +# nu-test-support = { path="../nu-test-support", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu-term-grid/Cargo.toml b/crates/nu-term-grid/Cargo.toml index 2570ce0d68..bc560257f8 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.1" +version = "0.94.2" [lib] bench = false [dependencies] -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } 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 e2525d8c78..07f4142d43 100644 --- a/crates/nu-test-support/Cargo.toml +++ b/crates/nu-test-support/Cargo.toml @@ -5,16 +5,16 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-test-suppor edition = "2021" license = "MIT" name = "nu-test-support" -version = "0.94.1" +version = "0.94.2" [lib] doctest = false bench = false [dependencies] -nu-path = { path = "../nu-path", version = "0.94.1" } -nu-glob = { path = "../nu-glob", version = "0.94.1" } -nu-utils = { path = "../nu-utils", version = "0.94.1" } +nu-path = { path = "../nu-path", version = "0.94.2" } +nu-glob = { path = "../nu-glob", version = "0.94.2" } +nu-utils = { path = "../nu-utils", version = "0.94.2" } num-format = { workspace = true } which = { workspace = true } diff --git a/crates/nu-utils/Cargo.toml b/crates/nu-utils/Cargo.toml index 85b80015df..584602f184 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.1" +version = "0.94.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [[bin]] diff --git a/crates/nu-utils/src/sample_config/default_config.nu b/crates/nu-utils/src/sample_config/default_config.nu index 357a1cc7d5..6d84d8d1de 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.1" +# version = "0.94.2" # For more information on defining custom themes, see # https://www.nushell.sh/book/coloring_and_theming.html diff --git a/crates/nu-utils/src/sample_config/default_env.nu b/crates/nu-utils/src/sample_config/default_env.nu index 90705230a9..edf0830f9f 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.1" +# version = "0.94.2" def create_left_prompt [] { let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { diff --git a/crates/nu_plugin_custom_values/Cargo.toml b/crates/nu_plugin_custom_values/Cargo.toml index 7cfbc0b578..2f5ae29e3d 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.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", 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.1" } \ No newline at end of file +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu_plugin_example/Cargo.toml b/crates/nu_plugin_example/Cargo.toml index 0b4ec44e89..de370a0a5d 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.1" +version = "0.94.2" [[bin]] name = "nu_plugin_example" @@ -15,9 +15,9 @@ bench = false bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", features = ["plugin"] } [dev-dependencies] -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.1" } -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } \ No newline at end of file +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.2" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu_plugin_formats/Cargo.toml b/crates/nu_plugin_formats/Cargo.toml index 213ea74cd5..797eb69656 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.1" +version = "0.94.2" # 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.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", 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.1" } \ No newline at end of file +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.2" } \ No newline at end of file diff --git a/crates/nu_plugin_gstat/Cargo.toml b/crates/nu_plugin_gstat/Cargo.toml index 7c0ca79ebe..a16bf019f6 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.1" +version = "0.94.2" [lib] doctest = false @@ -16,7 +16,7 @@ name = "nu_plugin_gstat" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } git2 = "0.18" \ No newline at end of file diff --git a/crates/nu_plugin_inc/Cargo.toml b/crates/nu_plugin_inc/Cargo.toml index 543982d599..7b57d1591c 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.1" +version = "0.94.2" [lib] doctest = false @@ -16,7 +16,7 @@ name = "nu_plugin_inc" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1", features = ["plugin"] } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2", features = ["plugin"] } 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 d900f498da..15c8340c0e 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.1" +const NUSHELL_VERSION = "0.94.2" def main [--stdio] { if ($stdio) { diff --git a/crates/nu_plugin_polars/Cargo.toml b/crates/nu_plugin_polars/Cargo.toml index f93e183926..0855bc9b16 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.1" +version = "0.94.2" # 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.1" } -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-path = { path = "../nu-path", version = "0.94.1" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-path = { path = "../nu-path", version = "0.94.2" } # Potential dependencies for extras chrono = { workspace = true, features = ["std", "unstable-locales"], default-features = false } @@ -73,9 +73,9 @@ optional = false version = "0.39" [dev-dependencies] -nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } -nu-parser = { path = "../nu-parser", version = "0.94.1" } -nu-command = { path = "../nu-command", version = "0.94.1" } -nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.1" } +nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-command = { path = "../nu-command", version = "0.94.2" } +nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.94.2" } 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 55746d89c1..b2cb06c7eb 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.1" +NUSHELL_VERSION = "0.94.2" def signatures(): diff --git a/crates/nu_plugin_query/Cargo.toml b/crates/nu_plugin_query/Cargo.toml index b48ca14fa5..0fd251e646 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.1" +version = "0.94.2" [lib] doctest = false @@ -16,8 +16,8 @@ name = "nu_plugin_query" bench = false [dependencies] -nu-plugin = { path = "../nu-plugin", version = "0.94.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } +nu-plugin = { path = "../nu-plugin", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } gjson = "0.8" scraper = { default-features = false, version = "0.19" } diff --git a/crates/nu_plugin_stress_internals/Cargo.toml b/crates/nu_plugin_stress_internals/Cargo.toml index 159e0b616c..884244a5db 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.1" +version = "0.94.2" [[bin]] name = "nu_plugin_stress_internals" diff --git a/crates/nuon/Cargo.toml b/crates/nuon/Cargo.toml index 69e7d89713..80a4de36ae 100644 --- a/crates/nuon/Cargo.toml +++ b/crates/nuon/Cargo.toml @@ -5,14 +5,14 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nuon" edition = "2021" license = "MIT" name = "nuon" -version = "0.94.1" +version = "0.94.2" # 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.1" } -nu-protocol = { path = "../nu-protocol", version = "0.94.1" } -nu-engine = { path = "../nu-engine", version = "0.94.1" } +nu-parser = { path = "../nu-parser", version = "0.94.2" } +nu-protocol = { path = "../nu-protocol", version = "0.94.2" } +nu-engine = { path = "../nu-engine", version = "0.94.2" } once_cell = { workspace = true } fancy-regex = { workspace = true } From b50903cf58a067b78815be620372e8a3d5cbdcae Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Mon, 3 Jun 2024 00:28:45 -0700 Subject: [PATCH 2/3] Fix external command name parsing with backslashes, and add tests (#13027) # Description Fixes #13016 and adds tests for many variations of external call parsing. I just realized @kubouch took a crack at this too (#13022) so really whichever is better, but I think the tests are a good addition. --- crates/nu-parser/src/parser.rs | 35 +++-- crates/nu-parser/tests/test_parser.rs | 215 ++++++++++++++++++++++++++ 2 files changed, 239 insertions(+), 11 deletions(-) diff --git a/crates/nu-parser/src/parser.rs b/crates/nu-parser/src/parser.rs index ad5e7d4f42..830d8b81e0 100644 --- a/crates/nu-parser/src/parser.rs +++ b/crates/nu-parser/src/parser.rs @@ -16,6 +16,7 @@ use nu_protocol::{ IN_VARIABLE_ID, }; use std::{ + borrow::Cow, collections::{HashMap, HashSet}, num::ParseIntError, str, @@ -241,15 +242,10 @@ fn parse_external_arg(working_set: &mut StateWorkingSet, span: Span) -> External )) } else { // Eval stage trims the quotes, so we don't have to do the same thing when parsing. - let contents = if contents.starts_with(b"\"") { - let (contents, err) = unescape_string(contents, span); - if let Some(err) = err { - working_set.error(err) - } - String::from_utf8_lossy(&contents).to_string() - } else { - String::from_utf8_lossy(contents).to_string() - }; + let (contents, err) = unescape_string_preserving_quotes(contents, span); + if let Some(err) = err { + working_set.error(err); + } ExternalArgument::Regular(Expression { expr: Expr::String(contents), @@ -279,13 +275,13 @@ pub fn parse_external_call(working_set: &mut StateWorkingSet, spans: &[Span]) -> Box::new(arg) } else { // Eval stage will unquote the string, so we don't bother with that here - let (contents, err) = unescape_string(&head_contents, head_span); + let (contents, err) = unescape_string_preserving_quotes(&head_contents, head_span); if let Some(err) = err { working_set.error(err) } Box::new(Expression { - expr: Expr::String(String::from_utf8_lossy(&contents).into_owned()), + expr: Expr::String(contents), span: head_span, ty: Type::String, custom_completion: None, @@ -2699,6 +2695,23 @@ pub fn unescape_unquote_string(bytes: &[u8], span: Span) -> (String, Option (String, Option) { + let (bytes, err) = if bytes.starts_with(b"\"") { + let (bytes, err) = unescape_string(bytes, span); + (Cow::Owned(bytes), err) + } else { + (Cow::Borrowed(bytes), None) + }; + + // The original code for args used lossy conversion here, even though that's not what we + // typically use for strings. Revisit whether that's actually desirable later, but don't + // want to introduce a breaking change for this patch. + let token = String::from_utf8_lossy(&bytes).into_owned(); + (token, err) +} + pub fn parse_string(working_set: &mut StateWorkingSet, span: Span) -> Expression { trace!("parsing: string"); diff --git a/crates/nu-parser/tests/test_parser.rs b/crates/nu-parser/tests/test_parser.rs index ef5d968280..2646b3cc90 100644 --- a/crates/nu-parser/tests/test_parser.rs +++ b/crates/nu-parser/tests/test_parser.rs @@ -694,6 +694,221 @@ pub fn parse_call_missing_req_flag() { )); } +#[rstest] +#[case("foo-external-call", "foo-external-call", "bare word")] +#[case("^foo-external-call", "foo-external-call", "bare word with caret")] +#[case( + "foo/external-call", + "foo/external-call", + "bare word with forward slash" +)] +#[case( + "^foo/external-call", + "foo/external-call", + "bare word with forward slash and caret" +)] +#[case(r"foo\external-call", r"foo\external-call", "bare word with backslash")] +#[case( + r"^foo\external-call", + r"foo\external-call", + "bare word with backslash and caret" +)] +#[case( + "^'foo external call'", + "'foo external call'", + "single quote with caret" +)] +#[case( + "^'foo/external call'", + "'foo/external call'", + "single quote with forward slash and caret" +)] +#[case( + r"^'foo\external call'", + r"'foo\external call'", + "single quote with backslash and caret" +)] +#[case( + r#"^"foo external call""#, + r#""foo external call""#, + "double quote with caret" +)] +#[case( + r#"^"foo/external call""#, + r#""foo/external call""#, + "double quote with forward slash and caret" +)] +#[case( + r#"^"foo\\external call""#, + r#""foo\external call""#, + "double quote with backslash and caret" +)] +#[case("`foo external call`", "`foo external call`", "backtick quote")] +#[case( + "^`foo external call`", + "`foo external call`", + "backtick quote with caret" +)] +#[case( + "`foo/external call`", + "`foo/external call`", + "backtick quote with forward slash" +)] +#[case( + "^`foo/external call`", + "`foo/external call`", + "backtick quote with forward slash and caret" +)] +#[case( + r"^`foo\external call`", + r"`foo\external call`", + "backtick quote with backslash" +)] +#[case( + r"^`foo\external call`", + r"`foo\external call`", + "backtick quote with backslash and caret" +)] +fn test_external_call_name(#[case] input: &str, #[case] expected: &str, #[case] tag: &str) { + let engine_state = EngineState::new(); + let mut working_set = StateWorkingSet::new(&engine_state); + let block = parse(&mut working_set, None, input.as_bytes(), true); + assert!( + working_set.parse_errors.is_empty(), + "{tag}: errors: {:?}", + working_set.parse_errors + ); + + let pipeline = &block.pipelines[0]; + assert_eq!(1, pipeline.len()); + let element = &pipeline.elements[0]; + match &element.expr.expr { + Expr::ExternalCall(name, args) => { + match &name.expr { + Expr::String(string) => { + assert_eq!(expected, string); + } + other => { + panic!("{tag}: Unexpected expression in command name position: {other:?}"); + } + } + assert_eq!(0, args.len()); + } + other => { + panic!("{tag}: Unexpected expression in pipeline: {other:?}"); + } + } +} + +#[rstest] +#[case("^foo bar-baz", "bar-baz", "bare word")] +#[case("^foo bar/baz", "bar/baz", "bare word with forward slash")] +#[case(r"^foo bar\baz", r"bar\baz", "bare word with backslash")] +#[case("^foo 'bar baz'", "'bar baz'", "single quote")] +#[case("foo 'bar/baz'", "'bar/baz'", "single quote with forward slash")] +#[case(r"foo 'bar\baz'", r"'bar\baz'", "single quote with backslash")] +#[case(r#"^foo "bar baz""#, r#""bar baz""#, "double quote")] +#[case(r#"^foo "bar/baz""#, r#""bar/baz""#, "double quote with forward slash")] +#[case(r#"^foo "bar\\baz""#, r#""bar\baz""#, "double quote with backslash")] +#[case("^foo `bar baz`", "`bar baz`", "backtick quote")] +#[case("^foo `bar/baz`", "`bar/baz`", "backtick quote with forward slash")] +#[case(r"^foo `bar\baz`", r"`bar\baz`", "backtick quote with backslash")] +fn test_external_call_argument_regular( + #[case] input: &str, + #[case] expected: &str, + #[case] tag: &str, +) { + let engine_state = EngineState::new(); + let mut working_set = StateWorkingSet::new(&engine_state); + let block = parse(&mut working_set, None, input.as_bytes(), true); + assert!( + working_set.parse_errors.is_empty(), + "{tag}: errors: {:?}", + working_set.parse_errors + ); + + let pipeline = &block.pipelines[0]; + assert_eq!(1, pipeline.len()); + let element = &pipeline.elements[0]; + match &element.expr.expr { + Expr::ExternalCall(name, args) => { + match &name.expr { + Expr::String(string) => { + assert_eq!("foo", string, "{tag}: incorrect name"); + } + other => { + panic!("{tag}: Unexpected expression in command name position: {other:?}"); + } + } + assert_eq!(1, args.len()); + match &args[0] { + ExternalArgument::Regular(expr) => match &expr.expr { + Expr::String(string) => { + assert_eq!(expected, string, "{tag}: incorrect arg"); + } + other => { + panic!("Unexpected expression in command arg position: {other:?}") + } + }, + other @ ExternalArgument::Spread(..) => { + panic!("Unexpected external spread argument in command arg position: {other:?}") + } + } + } + other => { + panic!("{tag}: Unexpected expression in pipeline: {other:?}"); + } + } +} + +#[test] +fn test_external_call_argument_spread() { + let engine_state = EngineState::new(); + let mut working_set = StateWorkingSet::new(&engine_state); + let block = parse(&mut working_set, None, b"^foo ...[a b c]", true); + assert!( + working_set.parse_errors.is_empty(), + "errors: {:?}", + working_set.parse_errors + ); + + let pipeline = &block.pipelines[0]; + assert_eq!(1, pipeline.len()); + let element = &pipeline.elements[0]; + match &element.expr.expr { + Expr::ExternalCall(name, args) => { + match &name.expr { + Expr::String(string) => { + assert_eq!("foo", string, "incorrect name"); + } + other => { + panic!("Unexpected expression in command name position: {other:?}"); + } + } + assert_eq!(1, args.len()); + match &args[0] { + ExternalArgument::Spread(expr) => match &expr.expr { + Expr::List(items) => { + assert_eq!(3, items.len()); + // that's good enough, don't really need to go so deep into it... + } + other => { + panic!("Unexpected expression in command arg position: {other:?}") + } + }, + other @ ExternalArgument::Regular(..) => { + panic!( + "Unexpected external regular argument in command arg position: {other:?}" + ) + } + } + } + other => { + panic!("Unexpected expression in pipeline: {other:?}"); + } + } +} + #[test] fn test_nothing_comparison_eq() { let engine_state = EngineState::new(); From be8c1dc0066cd1034a6b110a622f47b516bfe029 Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Mon, 3 Jun 2024 00:38:55 -0700 Subject: [PATCH 3/3] Fix `run_external::expand_glob()` to return paths that are PWD-relative but reflect the original intent (#13028) # Description Fix #13021 This changes the `expand_glob()` function to use `nu_engine::glob_from()` so that absolute paths are actually preserved, rather than being made relative to the provided parent. This preserves the intent of whoever wrote the original path/glob, and also makes it so that tilde always produces absolute paths. I also made `expand_glob()` handle Ctrl-C so that it can be interrupted. cc @YizhePKU # Tests + Formatting No additional tests here... but that might be a good idea. --- crates/nu-command/src/system/run_external.rs | 143 +++++++++++++------ 1 file changed, 99 insertions(+), 44 deletions(-) diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index a200ce75de..d4645e87e8 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -4,7 +4,7 @@ use nu_protocol::{ ast::{Expr, Expression}, did_you_mean, process::ChildProcess, - ByteStream, OutDest, + ByteStream, NuGlob, OutDest, }; use nu_system::ForegroundChild; use nu_utils::IgnoreCaseExt; @@ -13,7 +13,7 @@ use std::{ io::Write, path::{Path, PathBuf}, process::Stdio, - sync::Arc, + sync::{atomic::AtomicBool, Arc}, thread, }; @@ -155,6 +155,9 @@ impl Command for External { } }; + // Log the command we're about to run in case it's useful for debugging purposes. + log::trace!("run-external spawning: {command:?}"); + // Spawn the child process. On Unix, also put the child process to // foreground if we're in an interactive session. #[cfg(windows)] @@ -232,6 +235,7 @@ pub fn eval_arguments_from_call( stack: &mut Stack, call: &Call, ) -> Result>, ShellError> { + let ctrlc = &engine_state.ctrlc; let cwd = engine_state.cwd(Some(stack))?; let mut args: Vec> = vec![]; for (expr, spread) in call.rest_iter(1) { @@ -240,7 +244,7 @@ pub fn eval_arguments_from_call( // glob-expansion, and inner-quotes-removal, in that order. for arg in eval_argument(engine_state, stack, expr, spread)? { let tilde_expanded = expand_tilde(&arg); - for glob_expanded in expand_glob(&tilde_expanded, &cwd, expr.span)? { + for glob_expanded in expand_glob(&tilde_expanded, &cwd, expr.span, ctrlc)? { let inner_quotes_removed = remove_inner_quotes(&glob_expanded); args.push(inner_quotes_removed.into_owned().into_spanned(expr.span)); } @@ -321,37 +325,75 @@ fn expand_tilde(arg: &str) -> String { /// /// Note: This matches the default behavior of Bash, but is known to be /// error-prone. We might want to change this behavior in the future. -fn expand_glob(arg: &str, cwd: &Path, span: Span) -> Result, ShellError> { - let Ok(paths) = nu_glob::glob_with_parent(arg, nu_glob::MatchOptions::default(), cwd) else { +fn expand_glob( + arg: &str, + cwd: &Path, + span: Span, + interrupt: &Option>, +) -> Result, ShellError> { + const GLOB_CHARS: &[char] = &['*', '?', '[']; + + // Don't expand something that doesn't include the GLOB_CHARS + if !arg.contains(GLOB_CHARS) { + return Ok(vec![arg.into()]); + } + + // We must use `nu_engine::glob_from` here, in order to ensure we get paths from the correct + // dir + let glob = NuGlob::Expand(arg.to_owned()).into_spanned(span); + let Ok((_prefix, paths)) = nu_engine::glob_from(&glob, cwd, span, None) else { + // If an error occurred, return the original input return Ok(vec![arg.into()]); }; - let mut result = vec![]; - for path in paths { - let path = path.map_err(|err| ShellError::IOErrorSpanned { - msg: format!("{}: {:?}", err.path().display(), err.error()), - span, - })?; - // Strip PWD from the resulting paths if possible. - let path_stripped = if let Ok(remainder) = path.strip_prefix(cwd) { - // If stripping PWD results in an empty path, return `.` instead. - if remainder.components().next().is_none() { - Path::new(".") - } else { - remainder + // If the first component of the original `arg` string path was '.', that should be preserved + let relative_to_dot = Path::new(arg).starts_with("."); + + let paths = paths + // Skip over glob failures. These are usually just inaccessible paths. + .flat_map(|path_result| match path_result { + Ok(path) => Some(path), + Err(err) => { + // But internally log them just in case we need to debug this. + log::warn!("Error in run_external::expand_glob(): {}", err); + None } - } else { - &path - }; - let path_string = path_stripped.to_string_lossy().to_string(); - result.push(path_string); - } + }) + // Make the paths relative to the cwd + .map(|path| { + path.strip_prefix(cwd) + .map(|path| path.to_owned()) + .unwrap_or(path) + }) + // Add './' to relative paths if the original pattern had it + .map(|path| { + if relative_to_dot && path.is_relative() { + Path::new(".").join(path) + } else { + path + } + }) + // Convert the paths returned to UTF-8 strings. + // + // FIXME: this fails to return the correct results for non-UTF-8 paths, but we don't support + // those in Nushell yet. + .map(|path| path.to_string_lossy().into_owned()) + // Abandon if ctrl-c is pressed + .map(|path| { + if !nu_utils::ctrl_c::was_pressed(interrupt) { + Ok(path) + } else { + Err(ShellError::InterruptedByUser { span: Some(span) }) + } + }) + .collect::, ShellError>>()?; - if result.is_empty() { - result.push(arg.to_string()); + if !paths.is_empty() { + Ok(paths) + } else { + // If we failed to match, return the original input + Ok(vec![arg.into()]) } - - Ok(result) } /// Transforms `--option="value"` into `--option=value`. `value` can be quoted @@ -607,6 +649,7 @@ fn escape_cmd_argument(arg: &Spanned) -> Result, ShellError mod test { use super::*; use nu_protocol::ast::ListItem; + use nu_test_support::{fs::Stub, playground::Playground}; #[test] fn test_remove_quotes() { @@ -669,26 +712,38 @@ mod test { #[test] fn test_expand_glob() { - let tempdir = tempfile::tempdir().unwrap(); - let cwd = tempdir.path(); - std::fs::File::create(cwd.join("a.txt")).unwrap(); - std::fs::File::create(cwd.join("b.txt")).unwrap(); + Playground::setup("test_expand_glob", |dirs, play| { + play.with_files(&[Stub::EmptyFile("a.txt"), Stub::EmptyFile("b.txt")]); - let actual = expand_glob("*.txt", cwd, Span::unknown()).unwrap(); - let expected = &["a.txt", "b.txt"]; - assert_eq!(actual, expected); + let cwd = dirs.test(); - let actual = expand_glob("'*.txt'", cwd, Span::unknown()).unwrap(); - let expected = &["'*.txt'"]; - assert_eq!(actual, expected); + let actual = expand_glob("*.txt", cwd, Span::unknown(), &None).unwrap(); + let expected = &["a.txt", "b.txt"]; + assert_eq!(actual, expected); - let actual = expand_glob(cwd.to_str().unwrap(), cwd, Span::unknown()).unwrap(); - let expected = &["."]; - assert_eq!(actual, expected); + let actual = expand_glob("./*.txt", cwd, Span::unknown(), &None).unwrap(); + let expected = vec![ + Path::new(".").join("a.txt").to_string_lossy().into_owned(), + Path::new(".").join("b.txt").to_string_lossy().into_owned(), + ]; + assert_eq!(actual, expected); - let actual = expand_glob("[*.txt", cwd, Span::unknown()).unwrap(); - let expected = &["[*.txt"]; - assert_eq!(actual, expected); + let actual = expand_glob("'*.txt'", cwd, Span::unknown(), &None).unwrap(); + let expected = &["'*.txt'"]; + assert_eq!(actual, expected); + + let actual = expand_glob(".", cwd, Span::unknown(), &None).unwrap(); + let expected = &["."]; + assert_eq!(actual, expected); + + let actual = expand_glob("./a.txt", cwd, Span::unknown(), &None).unwrap(); + let expected = &["./a.txt"]; + assert_eq!(actual, expected); + + let actual = expand_glob("[*.txt", cwd, Span::unknown(), &None).unwrap(); + let expected = &["[*.txt"]; + assert_eq!(actual, expected); + }) } #[test]