Compare commits

...

15 Commits

Author SHA1 Message Date
JT
62011b6bcc Bump to 0.42 (#4234) 2021-12-28 20:56:59 +11:00
1214cd57e8 bat: use regex-onig instead of regex-fancy (#4226)
Fixes #4224

Signed-off-by: nibon7 <nibon7@163.com>
2021-12-24 08:34:59 -06:00
6cd124ddb2 allow insecure server connections when using SSL (#4219)
Fixes #4211

Signed-off-by: nibon7 <nibon7@163.com>
2021-12-23 06:48:43 +11:00
d32aec5906 Don't panic if the other end of std{out,err} is closed (#4179)
* fix #4161

println! and friends will panic on BrokenPipe. The solution is to use
writeln! instead, and ignore the error (or do we want to do something else?)

* test that nu doesn't panic in case of BrokenPipe error

* fixup! test that nu doesn't panic in case of BrokenPipe error

* make do_not_panic_if_broken_pipe only run on UNIX systems
2021-12-21 10:08:41 +11:00
e919f9a73b use heck for string casing (#4081)
I removed the Inflector dependency in favor of heck for two reasons:
- to close #3674.
- heck seems simpler and actively maintained

We could probably alter the structure of the `str_` module to expose the
individual casing behaviors better.
I did not feel as confident on changing those signatures.

So I took a lazier approach of a macro in the `mod.rs` that creates the public
shimming function to heck's traits.
2021-12-14 09:43:48 -06:00
a3c349746f ci: update macOS agent (#4207)
10.14 has been deprecated: https://github.com/Azure/azure-sdk-for-cpp/issues/3168

This hopefully fixes recent CI failures!
2021-12-14 08:55:51 -06:00
b5f8f64d79 ci: fix macOS agent (#4203)
I noticed the agent documentation uses uppercase: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml
2021-12-13 13:08:03 -06:00
1576b959f9 update feat template (#4201) 2021-12-12 16:15:31 -06:00
4096f52003 update templates2 (#4200) 2021-12-12 16:11:27 -06:00
7ceb668419 Revert "try out title change (#4198)" (#4199)
This reverts commit 420aee18ca.
2021-12-12 16:06:07 -06:00
420aee18ca try out title change (#4198) 2021-12-12 16:05:24 -06:00
pin
15e9c11849 Fix build on NetBSD (#4192) 2021-12-09 14:23:40 +02:00
9fd680ae2b fix: Implicit coercion of boolean false and empty value #4094 (#4120)
Signed-off-by: closetool <c299999999@qq.com>
2021-12-09 14:19:51 +02:00
ad94ed5e13 Fix Configuration section in bug report template (#4181)
* Fix Configuration section in bug report template

Change the placeholder content to actually match the `to md` output, and add `--pretty`

* Don't omit data in placeholder configuration table

* Remove blank line in bug_report.yml
2021-12-08 13:32:28 -06:00
1bdcdcca70 fix: change into column_path to into column-path (breaking change) (#4185) (#4189) 2021-12-08 11:04:55 +02:00
54 changed files with 453 additions and 370 deletions

View File

@ -16,7 +16,7 @@ strategy:
image: ubuntu-18.04 image: ubuntu-18.04
style: 'wasm' style: 'wasm'
macos-stable: macos-stable:
image: macos-10.14 image: macOS-10.15
style: 'unflagged' style: 'unflagged'
windows-stable: windows-stable:
image: windows-2019 image: windows-2019

View File

@ -5,7 +5,7 @@ body:
id: description id: description
attributes: attributes:
label: Describe the bug label: Describe the bug
description: A clear and concise description of what the bug is. description: Thank you for your bug report. We are working diligently with our community to integrate our latest code base that we call [engine-q](https://github.com/nushell/engine-q). We would like your help with this by checking to see if this bug report is still needed in engine-q. Thank you for your patience while we ready the next version of nushell.
validations: validations:
required: true required: true
- type: textarea - type: textarea
@ -38,22 +38,20 @@ body:
id: config id: config
attributes: attributes:
label: Configuration label: Configuration
description: "Please run `> version | pivot key value | to md` and paste the output to show OS, features, etc" description: "Please run `version | pivot key value | to md --pretty` and paste the output to show OS, features, etc."
placeholder: | placeholder: |
> version | pivot key value | to md > version | pivot key value | to md --pretty
╭───┬────────────────────┬───────────────────────────────────────────────────────────────────────╮ | key | value |
│ # │ key │ value │ | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
├───┼────────────────────┼───────────────────────────────────────────────────────────────────────┤ | version | 0.40.0 |
│ 0 │ version │ 0.24.1 | build_os | linux-x86_64 |
│ 1 │ build_os │ macos-x86_64 │ | rust_version | rustc 1.56.1 |
│ 2 │ rust_version │ rustc 1.48.0 | cargo_version | cargo 1.56.0 |
│ 3 │ cargo_version │ cargo 1.48.0 | pkg_version | 0.40.0 |
│ 4 │ pkg_version │ 0.24.1 | build_time | 1980-01-01 00:00:00 +00:00 |
│ 5 │ build_time │ 2020-12-18 09:54:09 │ | build_rust_channel | release |
│ 6 │ build_rust_channel │ release | features | clipboard-cli, ctrlc, dataframe, default, rustyline, term, trash, uuid, which, zip |
│ 7 │ features │ ctrlc, default, directories, dirs, git, ichwh, rich-benchmark, | installed_plugins | binaryview, chart bar, chart line, fetch, from bson, from sqlite, inc, match, post, ps, query json, s3, selector, start, sys, textview, to bson, to sqlite, tree, xpath |
│ │ │ rustyline, term, uuid, which, zip │
╰───┴────────────────────┴───────────────────────────────────────────────────────────────────────╯
validations: validations:
required: false required: false
- type: textarea - type: textarea

View File

@ -5,7 +5,7 @@ body:
id: problem id: problem
attributes: attributes:
label: Related problem label: Related problem
description: Is your feature request related to a problem? Please describe. description: Thank you for your feature request. We are working diligently with our community to integrate our latest code base that we call [engine-q](https://github.com/nushell/engine-q). We would like your help with this by checking to see if this feature request is still needed in engine-q. Thank you for your patience while we ready the next version of nushell.
placeholder: | placeholder: |
A clear and concise description of what the problem is. A clear and concise description of what the problem is.
Example: I am trying to do [...] but [...] Example: I am trying to do [...] but [...]

145
Cargo.lock generated
View File

@ -2,16 +2,6 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 3
[[package]]
name = "Inflector"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
dependencies = [
"lazy_static",
"regex",
]
[[package]] [[package]]
name = "addr2line" name = "addr2line"
version = "0.17.0" version = "0.17.0"
@ -258,21 +248,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "bit-set"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
dependencies = [
"bit-vec",
]
[[package]]
name = "bit-vec"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "1.2.1" version = "1.2.1"
@ -1123,16 +1098,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
[[package]]
name = "fancy-regex"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d6b8560a05112eb52f04b00e5d3790c0dd75d9d980eb8a122fb23b92a623ccf"
dependencies = [
"bit-set",
"regex",
]
[[package]] [[package]]
name = "fd-lock" name = "fd-lock"
version = "3.0.1" version = "3.0.1"
@ -1548,6 +1513,12 @@ dependencies = [
"unicode-segmentation", "unicode-segmentation",
] ]
[[package]]
name = "heck"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]] [[package]]
name = "hermit-abi" name = "hermit-abi"
version = "0.1.19" version = "0.1.19"
@ -2281,7 +2252,7 @@ dependencies = [
[[package]] [[package]]
name = "nu" name = "nu"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"ctrlc", "ctrlc",
"futures 0.3.18", "futures 0.3.18",
@ -2321,7 +2292,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-ansi-term" name = "nu-ansi-term"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"doc-comment", "doc-comment",
"overload", "overload",
@ -2333,7 +2304,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-cli" name = "nu-cli"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"ctrlc", "ctrlc",
"indexmap", "indexmap",
@ -2360,9 +2331,8 @@ dependencies = [
[[package]] [[package]]
name = "nu-command" name = "nu-command"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"Inflector",
"base64", "base64",
"bigdecimal", "bigdecimal",
"calamine", "calamine",
@ -2381,6 +2351,7 @@ dependencies = [
"futures 0.3.18", "futures 0.3.18",
"glob", "glob",
"hamcrest2", "hamcrest2",
"heck 0.4.0",
"htmlescape", "htmlescape",
"ical", "ical",
"indexmap", "indexmap",
@ -2447,7 +2418,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-completion" name = "nu-completion"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"is_executable", "is_executable",
@ -2463,7 +2434,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-data" name = "nu-data"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"byte-unit", "byte-unit",
@ -2493,7 +2464,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-engine" name = "nu-engine"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"bytes 1.1.0", "bytes 1.1.0",
@ -2538,7 +2509,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-errors" name = "nu-errors"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"codespan-reporting", "codespan-reporting",
@ -2557,7 +2528,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-json" name = "nu-json"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"lazy_static", "lazy_static",
"linked-hash-map", "linked-hash-map",
@ -2571,7 +2542,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-parser" name = "nu-parser"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"derive-new", "derive-new",
@ -2590,7 +2561,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-path" name = "nu-path"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"dirs-next", "dirs-next",
"dunce", "dunce",
@ -2598,7 +2569,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-plugin" name = "nu-plugin"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"nu-errors", "nu-errors",
@ -2612,7 +2583,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-pretty-hex" name = "nu-pretty-hex"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"heapless", "heapless",
"nu-ansi-term", "nu-ansi-term",
@ -2621,7 +2592,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-protocol" name = "nu-protocol"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"byte-unit", "byte-unit",
@ -2643,7 +2614,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-serde" name = "nu-serde"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"insta", "insta",
@ -2655,7 +2626,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-source" name = "nu-source"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"derive-new", "derive-new",
"getset", "getset",
@ -2666,7 +2637,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-stream" name = "nu-stream"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"nu-errors", "nu-errors",
"nu-protocol", "nu-protocol",
@ -2675,7 +2646,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-table" name = "nu-table"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"atty", "atty",
"nu-ansi-term", "nu-ansi-term",
@ -2686,7 +2657,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-test-support" name = "nu-test-support"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"chrono", "chrono",
@ -2704,7 +2675,7 @@ dependencies = [
[[package]] [[package]]
name = "nu-value-ext" name = "nu-value-ext"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"itertools", "itertools",
@ -2716,7 +2687,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_binaryview" name = "nu_plugin_binaryview"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"crossterm", "crossterm",
"image", "image",
@ -2732,7 +2703,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_chart" name = "nu_plugin_chart"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"crossterm", "crossterm",
"nu-data", "nu-data",
@ -2746,7 +2717,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_from_bson" name = "nu_plugin_from_bson"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"bson", "bson",
@ -2758,7 +2729,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_from_mp4" name = "nu_plugin_from_mp4"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"mp4", "mp4",
"nu-errors", "nu-errors",
@ -2770,7 +2741,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_from_sqlite" name = "nu_plugin_from_sqlite"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"nu-errors", "nu-errors",
@ -2783,7 +2754,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_inc" name = "nu_plugin_inc"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"nu-errors", "nu-errors",
"nu-plugin", "nu-plugin",
@ -2796,7 +2767,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_match" name = "nu_plugin_match"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"nu-errors", "nu-errors",
"nu-plugin", "nu-plugin",
@ -2806,7 +2777,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_query_json" name = "nu_plugin_query_json"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"gjson", "gjson",
"nu-errors", "nu-errors",
@ -2817,7 +2788,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_s3" name = "nu_plugin_s3"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"futures 0.3.18", "futures 0.3.18",
"nu-errors", "nu-errors",
@ -2829,7 +2800,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_selector" name = "nu_plugin_selector"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"nu-errors", "nu-errors",
@ -2841,7 +2812,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_start" name = "nu_plugin_start"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"glob", "glob",
"nu-errors", "nu-errors",
@ -2855,7 +2826,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_textview" name = "nu_plugin_textview"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bat", "bat",
"nu-data", "nu-data",
@ -2869,7 +2840,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_to_bson" name = "nu_plugin_to_bson"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bson", "bson",
"nu-errors", "nu-errors",
@ -2881,7 +2852,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_to_sqlite" name = "nu_plugin_to_sqlite"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"hex", "hex",
"nu-errors", "nu-errors",
@ -2894,7 +2865,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_tree" name = "nu_plugin_tree"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"derive-new", "derive-new",
"nu-errors", "nu-errors",
@ -2905,7 +2876,7 @@ dependencies = [
[[package]] [[package]]
name = "nu_plugin_xpath" name = "nu_plugin_xpath"
version = "0.41.0" version = "0.42.0"
dependencies = [ dependencies = [
"bigdecimal", "bigdecimal",
"indexmap", "indexmap",
@ -3112,6 +3083,28 @@ version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
[[package]]
name = "onig"
version = "6.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ddfe2c93bb389eea6e6d713306880c7f6dcc99a75b659ce145d962c861b225"
dependencies = [
"bitflags",
"lazy_static",
"libc",
"onig_sys",
]
[[package]]
name = "onig_sys"
version = "69.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dd3eee045c84695b53b20255bb7317063df090b68e18bfac0abb6c39cf7f33e"
dependencies = [
"cc",
"pkg-config",
]
[[package]] [[package]]
name = "opaque-debug" name = "opaque-debug"
version = "0.3.0" version = "0.3.0"
@ -4474,7 +4467,7 @@ version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149"
dependencies = [ dependencies = [
"heck", "heck 0.3.3",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn",
@ -4538,11 +4531,11 @@ checksum = "8b20815bbe80ee0be06e6957450a841185fcf690fe0178f14d77a05ce2caa031"
dependencies = [ dependencies = [
"bincode", "bincode",
"bitflags", "bitflags",
"fancy-regex",
"flate2", "flate2",
"fnv", "fnv",
"lazy_static", "lazy_static",
"lazycell", "lazycell",
"onig",
"plist", "plist",
"regex-syntax", "regex-syntax",
"serde", "serde",
@ -4577,9 +4570,9 @@ dependencies = [
[[package]] [[package]]
name = "sysinfo" name = "sysinfo"
version = "0.21.1" version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb6c2c4a6ca462f07ca89841a2618dca6e405304d19ae238997e64915d89f513" checksum = "8f88d66f3341b688163d3585037954ff276cf24a234d015b30025318a3e3449a"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"core-foundation-sys", "core-foundation-sys",

View File

@ -10,7 +10,7 @@ license = "MIT"
name = "nu" name = "nu"
readme = "README.md" readme = "README.md"
repository = "https://github.com/nushell/nushell" repository = "https://github.com/nushell/nushell"
version = "0.41.0" version = "0.42.0"
[workspace] [workspace]
members = ["crates/*/"] members = ["crates/*/"]
@ -18,34 +18,34 @@ members = ["crates/*/"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
nu-cli = { version = "0.41.0", path="./crates/nu-cli", default-features=false } nu-cli = { version = "0.42.0", path="./crates/nu-cli", default-features=false }
nu-command = { version = "0.41.0", path="./crates/nu-command" } nu-command = { version = "0.42.0", path="./crates/nu-command" }
nu-completion = { version = "0.41.0", path="./crates/nu-completion" } nu-completion = { version = "0.42.0", path="./crates/nu-completion" }
nu-data = { version = "0.41.0", path="./crates/nu-data" } nu-data = { version = "0.42.0", path="./crates/nu-data" }
nu-engine = { version = "0.41.0", path="./crates/nu-engine" } nu-engine = { version = "0.42.0", path="./crates/nu-engine" }
nu-errors = { version = "0.41.0", path="./crates/nu-errors" } nu-errors = { version = "0.42.0", path="./crates/nu-errors" }
nu-parser = { version = "0.41.0", path="./crates/nu-parser" } nu-parser = { version = "0.42.0", path="./crates/nu-parser" }
nu-path = { version = "0.41.0", path="./crates/nu-path" } nu-path = { version = "0.42.0", path="./crates/nu-path" }
nu-plugin = { version = "0.41.0", path="./crates/nu-plugin" } nu-plugin = { version = "0.42.0", path="./crates/nu-plugin" }
nu-protocol = { version = "0.41.0", path="./crates/nu-protocol" } nu-protocol = { version = "0.42.0", path="./crates/nu-protocol" }
nu-source = { version = "0.41.0", path="./crates/nu-source" } nu-source = { version = "0.42.0", path="./crates/nu-source" }
nu-value-ext = { version = "0.41.0", path="./crates/nu-value-ext" } nu-value-ext = { version = "0.42.0", path="./crates/nu-value-ext" }
nu_plugin_binaryview = { version = "0.41.0", path="./crates/nu_plugin_binaryview", optional=true } nu_plugin_binaryview = { version = "0.42.0", path="./crates/nu_plugin_binaryview", optional=true }
nu_plugin_chart = { version = "0.41.0", path="./crates/nu_plugin_chart", optional=true } nu_plugin_chart = { version = "0.42.0", path="./crates/nu_plugin_chart", optional=true }
nu_plugin_from_bson = { version = "0.41.0", path="./crates/nu_plugin_from_bson", optional=true } nu_plugin_from_bson = { version = "0.42.0", path="./crates/nu_plugin_from_bson", optional=true }
nu_plugin_from_sqlite = { version = "0.41.0", path="./crates/nu_plugin_from_sqlite", optional=true } nu_plugin_from_sqlite = { version = "0.42.0", path="./crates/nu_plugin_from_sqlite", optional=true }
nu_plugin_inc = { version = "0.41.0", path="./crates/nu_plugin_inc", optional=true } nu_plugin_inc = { version = "0.42.0", path="./crates/nu_plugin_inc", optional=true }
nu_plugin_match = { version = "0.41.0", path="./crates/nu_plugin_match", optional=true } nu_plugin_match = { version = "0.42.0", path="./crates/nu_plugin_match", optional=true }
nu_plugin_query_json = { version = "0.41.0", path="./crates/nu_plugin_query_json", optional=true } nu_plugin_query_json = { version = "0.42.0", path="./crates/nu_plugin_query_json", optional=true }
nu_plugin_s3 = { version = "0.41.0", path="./crates/nu_plugin_s3", optional=true } nu_plugin_s3 = { version = "0.42.0", path="./crates/nu_plugin_s3", optional=true }
nu_plugin_selector = { version = "0.41.0", path="./crates/nu_plugin_selector", optional=true } nu_plugin_selector = { version = "0.42.0", path="./crates/nu_plugin_selector", optional=true }
nu_plugin_start = { version = "0.41.0", path="./crates/nu_plugin_start", optional=true } nu_plugin_start = { version = "0.42.0", path="./crates/nu_plugin_start", optional=true }
nu_plugin_textview = { version = "0.41.0", path="./crates/nu_plugin_textview", optional=true } nu_plugin_textview = { version = "0.42.0", path="./crates/nu_plugin_textview", optional=true }
nu_plugin_to_bson = { version = "0.41.0", path="./crates/nu_plugin_to_bson", optional=true } nu_plugin_to_bson = { version = "0.42.0", path="./crates/nu_plugin_to_bson", optional=true }
nu_plugin_to_sqlite = { version = "0.41.0", path="./crates/nu_plugin_to_sqlite", optional=true } nu_plugin_to_sqlite = { version = "0.42.0", path="./crates/nu_plugin_to_sqlite", optional=true }
nu_plugin_tree = { version = "0.41.0", path="./crates/nu_plugin_tree", optional=true } nu_plugin_tree = { version = "0.42.0", path="./crates/nu_plugin_tree", optional=true }
nu_plugin_xpath = { version = "0.41.0", path="./crates/nu_plugin_xpath", optional=true } nu_plugin_xpath = { version = "0.42.0", path="./crates/nu_plugin_xpath", optional=true }
# Required to bootstrap the main binary # Required to bootstrap the main binary
ctrlc = { version="3.1.7", optional=true } ctrlc = { version="3.1.7", optional=true }
@ -53,7 +53,7 @@ futures = { version="0.3.12", features=["compat", "io-compat"] }
itertools = "0.10.0" itertools = "0.10.0"
[dev-dependencies] [dev-dependencies]
nu-test-support = { version = "0.41.0", path="./crates/nu-test-support" } nu-test-support = { version = "0.42.0", path="./crates/nu-test-support" }
serial_test = "0.5.1" serial_test = "0.5.1"
hamcrest2 = "0.3.0" hamcrest2 = "0.3.0"
rstest = "0.10.0" rstest = "0.10.0"

View File

@ -9,7 +9,7 @@ description = "Library for ANSI terminal colors and styles (bold, underline)"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-ansi-term" name = "nu-ansi-term"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false

View File

@ -4,24 +4,24 @@ description = "CLI for nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-cli" name = "nu-cli"
version = "0.41.0" version = "0.42.0"
build = "build.rs" build = "build.rs"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-completion = { version = "0.41.0", path="../nu-completion" } nu-completion = { version = "0.42.0", path="../nu-completion" }
nu-command = { version = "0.41.0", path="../nu-command" } nu-command = { version = "0.42.0", path="../nu-command" }
nu-data = { version = "0.41.0", path="../nu-data" } nu-data = { version = "0.42.0", path="../nu-data" }
nu-engine = { version = "0.41.0", path="../nu-engine" } nu-engine = { version = "0.42.0", path="../nu-engine" }
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-parser = { version = "0.41.0", path="../nu-parser" } nu-parser = { version = "0.42.0", path="../nu-parser" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-stream = { version = "0.41.0", path="../nu-stream" } nu-stream = { version = "0.42.0", path="../nu-stream" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
indexmap ="1.6.1" indexmap ="1.6.1"
log = "0.4.14" log = "0.4.14"

View File

@ -5,32 +5,32 @@ description = "CLI for nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-command" name = "nu-command"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-data = { version = "0.41.0", path="../nu-data" } nu-data = { version = "0.42.0", path="../nu-data" }
nu-engine = { version = "0.41.0", path="../nu-engine" } nu-engine = { version = "0.42.0", path="../nu-engine" }
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-json = { version = "0.41.0", path="../nu-json" } nu-json = { version = "0.42.0", path="../nu-json" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-parser = { version = "0.41.0", path="../nu-parser" } nu-parser = { version = "0.42.0", path="../nu-parser" }
nu-plugin = { version = "0.41.0", path="../nu-plugin" } nu-plugin = { version = "0.42.0", path="../nu-plugin" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-serde = { version = "0.41.0", path="../nu-serde" } nu-serde = { version = "0.42.0", path="../nu-serde" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-stream = { version = "0.41.0", path="../nu-stream" } nu-stream = { version = "0.42.0", path="../nu-stream" }
nu-table = { version = "0.41.0", path="../nu-table" } nu-table = { version = "0.42.0", path="../nu-table" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" } nu-value-ext = { version = "0.42.0", path="../nu-value-ext" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
nu-pretty-hex = { version = "0.41.0", path="../nu-pretty-hex" } nu-pretty-hex = { version = "0.42.0", path="../nu-pretty-hex" }
url = "2.2.1" url = "2.2.1"
mime = "0.3.16" mime = "0.3.16"
Inflector = "0.11" heck = "0.4.0"
base64 = "0.13.0" base64 = "0.13.0"
bigdecimal = { version = "0.3.0", features = ["serde"] } bigdecimal = { version = "0.3.0", features = ["serde"] }
calamine = "0.18.0" calamine = "0.18.0"
@ -73,7 +73,7 @@ serde_urlencoded = "0.7.0"
serde_yaml = "0.8.16" serde_yaml = "0.8.16"
sha2 = "0.9.3" sha2 = "0.9.3"
strip-ansi-escapes = "0.1.0" strip-ansi-escapes = "0.1.0"
sysinfo = { version = "0.21.1", optional = true } sysinfo = { version = "0.21.2", optional = true }
thiserror = "1.0.26" thiserror = "1.0.26"
term = { version="0.7.0", optional=true } term = { version="0.7.0", optional=true }
term_size = "0.3.2" term_size = "0.3.2"

View File

@ -7,14 +7,14 @@ pub struct SubCommand;
impl WholeStreamCommand for SubCommand { impl WholeStreamCommand for SubCommand {
fn name(&self) -> &str { fn name(&self) -> &str {
"into column_path" "into column-path"
} }
fn signature(&self) -> Signature { fn signature(&self) -> Signature {
Signature::build("into column_path").rest( Signature::build("into column-path").rest(
"rest", "rest",
SyntaxShape::ColumnPath, SyntaxShape::ColumnPath,
"values to convert to column_path", "values to convert to column path",
) )
} }
@ -29,8 +29,8 @@ impl WholeStreamCommand for SubCommand {
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {
vec![ vec![
Example { Example {
description: "Convert string to column_path in table", description: "Convert string to column path in table",
example: "echo [[name]; ['/dev/null'] ['C:\\Program Files'] ['../../Cargo.toml']] | into column_path name", example: "echo [[name]; ['/dev/null'] ['C:\\Program Files'] ['../../Cargo.toml']] | into column-path name",
result: Some(vec![ result: Some(vec![
UntaggedValue::row(indexmap! { UntaggedValue::row(indexmap! {
"name".to_string() => UntaggedValue::column_path("/dev/null", Span::unknown()).into(), "name".to_string() => UntaggedValue::column_path("/dev/null", Span::unknown()).into(),
@ -47,8 +47,8 @@ impl WholeStreamCommand for SubCommand {
]), ]),
}, },
Example { Example {
description: "Convert string to column_path", description: "Convert string to column path",
example: "echo 'Cargo.toml' | into column_path", example: "echo 'Cargo.toml' | into column-path",
result: Some(vec![UntaggedValue::column_path("Cargo.toml", Span::unknown()).into()]), result: Some(vec![UntaggedValue::column_path("Cargo.toml", Span::unknown()).into()]),
}, },
] ]
@ -86,7 +86,7 @@ pub fn action(input: &Value, tag: impl Into<Tag>) -> Result<Value, ShellError> {
Primitive::String(a_string) => a_string, Primitive::String(a_string) => a_string,
_ => { _ => {
return Err(ShellError::unimplemented( return Err(ShellError::unimplemented(
"'into column_path' for non-string primitives", "'into column-path' for non-string primitives",
)) ))
} }
}, },
@ -94,12 +94,12 @@ pub fn action(input: &Value, tag: impl Into<Tag>) -> Result<Value, ShellError> {
) )
.into_value(&tag)), .into_value(&tag)),
UntaggedValue::Row(_) => Err(ShellError::labeled_error( UntaggedValue::Row(_) => Err(ShellError::labeled_error(
"specify column name to use, with 'into column_path COLUMN'", "specify column name to use, with 'into column-path COLUMN'",
"found table", "found table",
tag, tag,
)), )),
_ => Err(ShellError::unimplemented( _ => Err(ShellError::unimplemented(
"'into column_path' for unsupported type", "'into column-path' for unsupported type",
)), )),
} }
} }

View File

@ -36,6 +36,7 @@ impl WholeStreamCommand for Command {
Some('p'), Some('p'),
) )
.switch("raw", "fetch contents as text rather than a table", Some('r')) .switch("raw", "fetch contents as text rather than a table", Some('r'))
.switch("insecure", "allow insecure server connections when using SSL", Some('k'))
.filter() .filter()
} }
@ -78,6 +79,7 @@ fn run_fetch(args: CommandArgs) -> Result<ActionStream, ShellError> {
) )
})?, })?,
fetch_helper.has_raw, fetch_helper.has_raw,
fetch_helper.has_insecure,
fetch_helper.user.clone(), fetch_helper.user.clone(),
fetch_helper.password, fetch_helper.password,
))] ))]
@ -92,6 +94,7 @@ pub struct Fetch {
pub path: Option<Value>, pub path: Option<Value>,
pub tag: Tag, pub tag: Tag,
pub has_raw: bool, pub has_raw: bool,
pub has_insecure: bool,
pub user: Option<String>, pub user: Option<String>,
pub password: Option<String>, pub password: Option<String>,
} }
@ -102,6 +105,7 @@ impl Fetch {
path: None, path: None,
tag: Tag::unknown(), tag: Tag::unknown(),
has_raw: false, has_raw: false,
has_insecure: false,
user: None, user: None,
password: None, password: None,
} }
@ -121,6 +125,8 @@ impl Fetch {
self.has_raw = args.has_flag("raw"); self.has_raw = args.has_flag("raw");
self.has_insecure = args.has_flag("insecure");
self.user = args.get_flag("user")?; self.user = args.get_flag("user")?;
self.password = args.get_flag("password")?; self.password = args.get_flag("password")?;
@ -132,13 +138,14 @@ impl Fetch {
pub async fn fetch( pub async fn fetch(
path: &Value, path: &Value,
has_raw: bool, has_raw: bool,
has_insecure: bool,
user: Option<String>, user: Option<String>,
password: Option<String>, password: Option<String>,
) -> ReturnValue { ) -> ReturnValue {
let path_str = path.as_string()?; let path_str = path.as_string()?;
let path_span = path.tag.span; let path_span = path.tag.span;
let result = helper(&path_str, path_span, has_raw, user, password).await; let result = helper(&path_str, path_span, has_raw, has_insecure, user, password).await;
if let Err(e) = result { if let Err(e) = result {
return Err(e); return Err(e);
@ -168,6 +175,7 @@ async fn helper(
location: &str, location: &str,
span: Span, span: Span,
has_raw: bool, has_raw: bool,
has_insecure: bool,
user: Option<String>, user: Option<String>,
password: Option<String>, password: Option<String>,
) -> std::result::Result<(Option<String>, Value), ShellError> { ) -> std::result::Result<(Option<String>, Value), ShellError> {
@ -188,7 +196,7 @@ async fn helper(
_ => None, _ => None,
}; };
let client = http_client(); let client = http_client(has_insecure);
let mut request = client.get(url); let mut request = client.get(url);
if let Some(login) = login { if let Some(login) = login {
@ -360,10 +368,10 @@ async fn helper(
// Only panics if the user agent is invalid but we define it statically so either // Only panics if the user agent is invalid but we define it statically so either
// it always or never fails // it always or never fails
#[allow(clippy::unwrap_used)] fn http_client(allow_insecure: bool) -> reqwest::Client {
fn http_client() -> reqwest::Client {
reqwest::Client::builder() reqwest::Client::builder()
.user_agent("nushell") .user_agent("nushell")
.danger_accept_invalid_certs(allow_insecure)
.build() .build()
.unwrap() .expect("Failed to build reqwest client")
} }

View File

@ -53,6 +53,11 @@ impl WholeStreamCommand for Command {
"return values as a string instead of a table", "return values as a string instead of a table",
Some('r'), Some('r'),
) )
.switch(
"insecure",
"allow insecure server connections when using SSL",
Some('k'),
)
.filter() .filter()
} }
@ -91,6 +96,7 @@ fn run_post(args: CommandArgs) -> Result<ActionStream, ShellError> {
ShellError::labeled_error("expected a 'path'", "expected a 'path'", &helper.tag) ShellError::labeled_error("expected a 'path'", "expected a 'path'", &helper.tag)
})?, })?,
helper.has_raw, helper.has_raw,
helper.has_insecure,
&helper.body.clone().ok_or_else(|| { &helper.body.clone().ok_or_else(|| {
ShellError::labeled_error("expected a 'body'", "expected a 'body'", &helper.tag) ShellError::labeled_error("expected a 'body'", "expected a 'body'", &helper.tag)
})?, })?,
@ -114,6 +120,7 @@ pub enum HeaderKind {
pub struct Post { pub struct Post {
pub path: Option<Value>, pub path: Option<Value>,
pub has_raw: bool, pub has_raw: bool,
pub has_insecure: bool,
pub body: Option<Value>, pub body: Option<Value>,
pub user: Option<String>, pub user: Option<String>,
pub password: Option<String>, pub password: Option<String>,
@ -126,6 +133,7 @@ impl Post {
Post { Post {
path: None, path: None,
has_raw: false, has_raw: false,
has_insecure: false,
body: None, body: None,
user: None, user: None,
password: None, password: None,
@ -156,6 +164,8 @@ impl Post {
self.has_raw = args.has_flag("raw"); self.has_raw = args.has_flag("raw");
self.has_insecure = args.has_flag("insecure");
self.user = args.get_flag("user")?; self.user = args.get_flag("user")?;
self.password = args.get_flag("password")?; self.password = args.get_flag("password")?;
@ -169,6 +179,7 @@ impl Post {
pub async fn post_helper( pub async fn post_helper(
path: &Value, path: &Value,
has_raw: bool, has_raw: bool,
has_insecure: bool,
body: &Value, body: &Value,
user: Option<String>, user: Option<String>,
password: Option<String>, password: Option<String>,
@ -177,8 +188,16 @@ pub async fn post_helper(
let path_tag = path.tag.clone(); let path_tag = path.tag.clone();
let path_str = path.as_string()?; let path_str = path.as_string()?;
let (file_extension, contents, contents_tag) = let (file_extension, contents, contents_tag) = post(
post(&path_str, body, user, password, headers, path_tag.clone()).await?; &path_str,
has_insecure,
body,
user,
password,
headers,
path_tag.clone(),
)
.await?;
let file_extension = if has_raw { let file_extension = if has_raw {
None None
@ -202,6 +221,7 @@ pub async fn post_helper(
pub async fn post( pub async fn post(
location: &str, location: &str,
allow_insecure: bool,
body: &Value, body: &Value,
user: Option<String>, user: Option<String>,
password: Option<String>, password: Option<String>,
@ -219,7 +239,9 @@ pub async fn post(
value: UntaggedValue::Primitive(Primitive::String(body_str)), value: UntaggedValue::Primitive(Primitive::String(body_str)),
.. ..
} => { } => {
let mut s = http_client().post(location).body(body_str.to_string()); let mut s = http_client(allow_insecure)
.post(location)
.body(body_str.to_string());
if let Some(login) = login { if let Some(login) = login {
s = s.header("Authorization", format!("Basic {}", login)); s = s.header("Authorization", format!("Basic {}", login));
} }
@ -237,7 +259,9 @@ pub async fn post(
value: UntaggedValue::Primitive(Primitive::Binary(b)), value: UntaggedValue::Primitive(Primitive::Binary(b)),
.. ..
} => { } => {
let mut s = http_client().post(location).body(Vec::from(&b[..])); let mut s = http_client(allow_insecure)
.post(location)
.body(Vec::from(&b[..]));
if let Some(login) = login { if let Some(login) = login {
s = s.header("Authorization", format!("Basic {}", login)); s = s.header("Authorization", format!("Basic {}", login));
} }
@ -247,7 +271,9 @@ pub async fn post(
match value_to_json_value(&value.clone().into_untagged_value()) { match value_to_json_value(&value.clone().into_untagged_value()) {
Ok(json_value) => match serde_json::to_string(&json_value) { Ok(json_value) => match serde_json::to_string(&json_value) {
Ok(result_string) => { Ok(result_string) => {
let mut s = http_client().post(location).body(result_string); let mut s = http_client(allow_insecure)
.post(location)
.body(result_string);
if let Some(login) = login { if let Some(login) = login {
s = s.header("Authorization", format!("Basic {}", login)); s = s.header("Authorization", format!("Basic {}", login));
@ -611,10 +637,10 @@ fn extract_header_value(args: &CommandArgs, key: &str) -> Result<Option<String>,
// Only panics if the user agent is invalid but we define it statically so either // Only panics if the user agent is invalid but we define it statically so either
// it always or never fails // it always or never fails
#[allow(clippy::unwrap_used)] fn http_client(allow_insecure: bool) -> reqwest::Client {
fn http_client() -> reqwest::Client {
reqwest::Client::builder() reqwest::Client::builder()
.user_agent("nushell") .user_agent("nushell")
.danger_accept_invalid_certs(allow_insecure)
.build() .build()
.unwrap() .expect("Failed to build reqwest client")
} }

View File

@ -1,6 +1,5 @@
use super::operate; use super::{operate, to_lower_camel_case};
use crate::prelude::*; use crate::prelude::*;
use inflector::cases::camelcase::to_camel_case;
use nu_engine::WholeStreamCommand; use nu_engine::WholeStreamCommand;
use nu_errors::ShellError; use nu_errors::ShellError;
use nu_protocol::{Signature, SyntaxShape, Value}; use nu_protocol::{Signature, SyntaxShape, Value};
@ -25,7 +24,7 @@ impl WholeStreamCommand for SubCommand {
} }
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> { fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
operate(args, &to_camel_case) operate(args, &to_lower_camel_case)
} }
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {
@ -40,7 +39,7 @@ impl WholeStreamCommand for SubCommand {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::ShellError; use super::ShellError;
use super::{to_camel_case, SubCommand}; use super::{to_lower_camel_case, SubCommand};
use crate::commands::strings::str_::case::action; use crate::commands::strings::str_::case::action;
use nu_source::Tag; use nu_source::Tag;
use nu_test_support::value::string; use nu_test_support::value::string;
@ -57,7 +56,7 @@ mod tests {
let word = string("this-is-the-first-case"); let word = string("this-is-the-first-case");
let expected = string("thisIsTheFirstCase"); let expected = string("thisIsTheFirstCase");
let actual = action(&word, Tag::unknown(), &to_camel_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_lower_camel_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
#[test] #[test]
@ -65,7 +64,7 @@ mod tests {
let word = string("this_is_the_second_case"); let word = string("this_is_the_second_case");
let expected = string("thisIsTheSecondCase"); let expected = string("thisIsTheSecondCase");
let actual = action(&word, Tag::unknown(), &to_camel_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_lower_camel_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
} }

View File

@ -1,6 +1,5 @@
use super::operate; use super::{operate, to_kebab_case};
use crate::prelude::*; use crate::prelude::*;
use inflector::cases::kebabcase::to_kebab_case;
use nu_engine::WholeStreamCommand; use nu_engine::WholeStreamCommand;
use nu_errors::ShellError; use nu_errors::ShellError;
use nu_protocol::{Signature, SyntaxShape, Value}; use nu_protocol::{Signature, SyntaxShape, Value};

View File

@ -16,6 +16,24 @@ pub use pascal_case::SubCommand as PascalCase;
pub use screaming_snake_case::SubCommand as ScreamingSnakeCase; pub use screaming_snake_case::SubCommand as ScreamingSnakeCase;
pub use snake_case::SubCommand as SnakeCase; pub use snake_case::SubCommand as SnakeCase;
use heck::ToKebabCase;
use heck::ToLowerCamelCase;
use heck::ToShoutySnakeCase;
use heck::ToSnakeCase;
use heck::ToUpperCamelCase;
macro_rules! create_heck_function {
($func_name:ident) => {
pub fn $func_name(a_slice: &str) -> String {
a_slice.$func_name()
}
};
}
create_heck_function!(to_upper_camel_case);
create_heck_function!(to_lower_camel_case);
create_heck_function!(to_kebab_case);
create_heck_function!(to_shouty_snake_case);
create_heck_function!(to_snake_case);
struct Arguments { struct Arguments {
column_paths: Vec<ColumnPath>, column_paths: Vec<ColumnPath>,
} }

View File

@ -1,6 +1,5 @@
use super::operate; use super::{operate, to_upper_camel_case};
use crate::prelude::*; use crate::prelude::*;
use inflector::cases::pascalcase::to_pascal_case;
use nu_engine::WholeStreamCommand; use nu_engine::WholeStreamCommand;
use nu_errors::ShellError; use nu_errors::ShellError;
use nu_protocol::{Signature, SyntaxShape, Value}; use nu_protocol::{Signature, SyntaxShape, Value};
@ -25,7 +24,7 @@ impl WholeStreamCommand for SubCommand {
} }
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> { fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
operate(args, &to_pascal_case) operate(args, &to_upper_camel_case)
} }
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {
@ -40,7 +39,7 @@ impl WholeStreamCommand for SubCommand {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::ShellError; use super::ShellError;
use super::{to_pascal_case, SubCommand}; use super::{to_upper_camel_case, SubCommand};
use crate::commands::strings::str_::case::action; use crate::commands::strings::str_::case::action;
use nu_source::Tag; use nu_source::Tag;
use nu_test_support::value::string; use nu_test_support::value::string;
@ -57,7 +56,7 @@ mod tests {
let word = string("this-is-the-first-case"); let word = string("this-is-the-first-case");
let expected = string("ThisIsTheFirstCase"); let expected = string("ThisIsTheFirstCase");
let actual = action(&word, Tag::unknown(), &to_pascal_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_upper_camel_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
#[test] #[test]
@ -65,7 +64,7 @@ mod tests {
let word = string("this_is_the_second_case"); let word = string("this_is_the_second_case");
let expected = string("ThisIsTheSecondCase"); let expected = string("ThisIsTheSecondCase");
let actual = action(&word, Tag::unknown(), &to_pascal_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_upper_camel_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
} }

View File

@ -1,6 +1,5 @@
use super::operate; use super::{operate, to_shouty_snake_case};
use crate::prelude::*; use crate::prelude::*;
use inflector::cases::screamingsnakecase::to_screaming_snake_case;
use nu_engine::WholeStreamCommand; use nu_engine::WholeStreamCommand;
use nu_errors::ShellError; use nu_errors::ShellError;
use nu_protocol::{Signature, SyntaxShape, Value}; use nu_protocol::{Signature, SyntaxShape, Value};
@ -25,7 +24,7 @@ impl WholeStreamCommand for SubCommand {
} }
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> { fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
operate(args, &to_screaming_snake_case) operate(args, &to_shouty_snake_case)
} }
fn examples(&self) -> Vec<Example> { fn examples(&self) -> Vec<Example> {
@ -40,7 +39,7 @@ impl WholeStreamCommand for SubCommand {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::ShellError; use super::ShellError;
use super::{to_screaming_snake_case, SubCommand}; use super::{to_shouty_snake_case, SubCommand};
use crate::commands::strings::str_::case::action; use crate::commands::strings::str_::case::action;
use nu_source::Tag; use nu_source::Tag;
use nu_test_support::value::string; use nu_test_support::value::string;
@ -57,7 +56,7 @@ mod tests {
let word = string("this-is-the-first-case"); let word = string("this-is-the-first-case");
let expected = string("THIS_IS_THE_FIRST_CASE"); let expected = string("THIS_IS_THE_FIRST_CASE");
let actual = action(&word, Tag::unknown(), &to_screaming_snake_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_shouty_snake_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
#[test] #[test]
@ -65,7 +64,7 @@ mod tests {
let word = string("this_is_the_second_case"); let word = string("this_is_the_second_case");
let expected = string("THIS_IS_THE_SECOND_CASE"); let expected = string("THIS_IS_THE_SECOND_CASE");
let actual = action(&word, Tag::unknown(), &to_screaming_snake_case).unwrap(); let actual = action(&word, Tag::unknown(), &to_shouty_snake_case).unwrap();
assert_eq!(actual, expected); assert_eq!(actual, expected);
} }
} }

View File

@ -1,6 +1,5 @@
use super::operate; use super::{operate, to_snake_case};
use crate::prelude::*; use crate::prelude::*;
use inflector::cases::snakecase::to_snake_case;
use nu_engine::WholeStreamCommand; use nu_engine::WholeStreamCommand;
use nu_errors::ShellError; use nu_errors::ShellError;
use nu_protocol::{Signature, SyntaxShape, Value}; use nu_protocol::{Signature, SyntaxShape, Value};

View File

@ -4,19 +4,19 @@ description = "Completions for nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-completion" name = "nu-completion"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-engine = { version = "0.41.0", path="../nu-engine" } nu-engine = { version = "0.42.0", path="../nu-engine" }
nu-data = { version = "0.41.0", path="../nu-data" } nu-data = { version = "0.42.0", path="../nu-data" }
nu-parser = { version = "0.41.0", path="../nu-parser" } nu-parser = { version = "0.42.0", path="../nu-parser" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
indexmap = { version="1.6.1", features=["serde-1"] } indexmap = { version="1.6.1", features=["serde-1"] }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies] [target.'cfg(not(target_arch = "wasm32"))'.dependencies]

View File

@ -4,7 +4,7 @@ description = "CLI for nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-data" name = "nu-data"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
@ -27,14 +27,14 @@ sha2 = "0.9.3"
sys-locale = "0.1.0" sys-locale = "0.1.0"
toml = "0.5.8" toml = "0.5.8"
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-table = { version = "0.41.0", path="../nu-table" } nu-table = { version = "0.42.0", path="../nu-table" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" } nu-value-ext = { version = "0.42.0", path="../nu-value-ext" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
[features] [features]
dataframe = ["nu-protocol/dataframe"] dataframe = ["nu-protocol/dataframe"]

View File

@ -164,8 +164,8 @@ pub fn coerce_compare_primitive(
(Date(left), Date(right)) => CompareValues::Date(*left, *right), (Date(left), Date(right)) => CompareValues::Date(*left, *right),
(Date(left), Duration(right)) => CompareValues::DateDuration(*left, right.clone()), (Date(left), Duration(right)) => CompareValues::DateDuration(*left, right.clone()),
(Boolean(left), Boolean(right)) => CompareValues::Booleans(*left, *right), (Boolean(left), Boolean(right)) => CompareValues::Booleans(*left, *right),
(Boolean(left), Nothing) => CompareValues::Booleans(*left, false), (Boolean(left), Nothing) => CompareValues::Ints(if *left { 1 } else { 0 }, -1),
(Nothing, Boolean(right)) => CompareValues::Booleans(false, *right), (Nothing, Boolean(right)) => CompareValues::Ints(-1, if *right { 1 } else { 0 }),
(String(left), Nothing) => CompareValues::String(left.clone(), std::string::String::new()), (String(left), Nothing) => CompareValues::String(left.clone(), std::string::String::new()),
(Nothing, String(right)) => { (Nothing, String(right)) => {
CompareValues::String(std::string::String::new(), right.clone()) CompareValues::String(std::string::String::new(), right.clone())

View File

@ -4,20 +4,20 @@ description = "Core commands for nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-engine" name = "nu-engine"
version = "0.41.0" version = "0.42.0"
[dependencies] [dependencies]
nu-data = { version = "0.41.0", path="../nu-data" } nu-data = { version = "0.42.0", path="../nu-data" }
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-parser = { version = "0.41.0", path="../nu-parser" } nu-parser = { version = "0.42.0", path="../nu-parser" }
nu-plugin = { version = "0.41.0", path="../nu-plugin" } nu-plugin = { version = "0.42.0", path="../nu-plugin" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-stream = { version = "0.41.0", path="../nu-stream" } nu-stream = { version = "0.42.0", path="../nu-stream" }
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" } nu-value-ext = { version = "0.42.0", path="../nu-value-ext" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
trash = { version = "2.0.2", optional = true } trash = { version = "2.0.2", optional = true }
which = { version="4.0.2", optional=true } which = { version="4.0.2", optional=true }
@ -50,7 +50,7 @@ umask = "1.0.0"
users = "0.11.0" users = "0.11.0"
[dev-dependencies] [dev-dependencies]
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
hamcrest2 = "0.3.0" hamcrest2 = "0.3.0"
[features] [features]

View File

@ -34,3 +34,21 @@ fn compare_to_nothing() {
); );
assert_eq!(actual.out, "true"); assert_eq!(actual.out, "true");
} }
#[test]
fn compare_nothing_and_boolean() {
let actual = nu!(
cwd: ".",
r#"
if $true == $nothing {echo $true} {echo $false}
"#
);
assert_eq!(actual.out, "false");
let actual = nu!(
cwd: ".",
r#"
if $false == $nothing {echo $true} {echo $false}
"#
);
assert_eq!(actual.out, "false");
}

View File

@ -4,14 +4,14 @@ description = "Core error subsystem for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-errors" name = "nu-errors"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
codespan-reporting = { version="0.11.0", features=["serialization"] } codespan-reporting = { version="0.11.0", features=["serialization"] }

View File

@ -4,7 +4,7 @@ description = "Fork of serde-hjson"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-json" name = "nu-json"
version = "0.41.0" version = "0.42.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -20,6 +20,6 @@ lazy_static = "1"
linked-hash-map = { version="0.5", optional=true } linked-hash-map = { version="0.5", optional=true }
[dev-dependencies] [dev-dependencies]
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
serde_json = "1.0.39" serde_json = "1.0.39"

View File

@ -4,7 +4,7 @@ description = "Nushell parser"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-parser" name = "nu-parser"
version = "0.41.0" version = "0.42.0"
[dependencies] [dependencies]
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
@ -15,12 +15,12 @@ num-bigint = { version="0.4.3", features=["serde"] }
itertools = "0.10.0" itertools = "0.10.0"
smart-default = "0.6.0" smart-default = "0.6.0"
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-data = { version = "0.41.0", path="../nu-data" } nu-data = { version = "0.42.0", path="../nu-data" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
nu-test-support = { version = "0.41.0", path="../nu-test-support" } nu-test-support = { version = "0.42.0", path="../nu-test-support" }
[features] [features]
stable = [] stable = []

View File

@ -4,7 +4,7 @@ description = "Path handling library for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-path" name = "nu-path"
version = "0.41.0" version = "0.42.0"
[dependencies] [dependencies]
dirs-next = "2.0.0" dirs-next = "2.0.0"

View File

@ -4,17 +4,17 @@ description = "Nushell Plugin"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-plugin" name = "nu-plugin"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
nu-test-support = { path="../nu-test-support", version = "0.41.0" } nu-test-support = { path="../nu-test-support", version = "0.42.0" }
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" } nu-value-ext = { path="../nu-value-ext", version = "0.42.0" }
indexmap = { version="1.6.1", features=["serde-1"] } indexmap = { version="1.6.1", features=["serde-1"] }
serde = { version="1.0", features=["derive"] } serde = { version="1.0", features=["derive"] }
serde_json = "1.0" serde_json = "1.0"

View File

@ -4,7 +4,7 @@ description = "Pretty hex dump of bytes slice in the common style."
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-pretty-hex" name = "nu-pretty-hex"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
@ -16,7 +16,7 @@ name = "nu_pretty_hex"
path = "src/main.rs" path = "src/main.rs"
[dependencies] [dependencies]
nu-ansi-term = { path="../nu-ansi-term", version = "0.41.0" } nu-ansi-term = { path="../nu-ansi-term", version = "0.42.0" }
rand = "0.8.3" rand = "0.8.3"
[dev-dependencies] [dev-dependencies]

View File

@ -4,7 +4,7 @@ description = "Core values and protocols for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-protocol" name = "nu-protocol"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
@ -18,8 +18,8 @@ derive-new = "0.5.8"
getset = "0.1.1" getset = "0.1.1"
indexmap = { version="1.6.1", features=["serde-1"] } indexmap = { version="1.6.1", features=["serde-1"] }
log = "0.4.14" log = "0.4.14"
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
num-bigint = { version = "0.4.3", features = ["serde"] } num-bigint = { version = "0.4.3", features = ["serde"] }
num-integer = "0.1.44" num-integer = "0.1.44"
num-traits = "0.2.14" num-traits = "0.2.14"

View File

@ -6,7 +6,7 @@
macro_rules! out { macro_rules! out {
($($tokens:tt)*) => { ($($tokens:tt)*) => {
use std::io::Write; use std::io::Write;
print!($($tokens)*); write!(std::io::stdout(), $($tokens)*).unwrap_or(());
let _ = std::io::stdout().flush(); let _ = std::io::stdout().flush();
} }
} }
@ -17,7 +17,12 @@ macro_rules! out {
/// and stray printlns left by accident /// and stray printlns left by accident
#[macro_export] #[macro_export]
macro_rules! outln { macro_rules! outln {
($($tokens:tt)*) => { println!($($tokens)*) } ($($tokens:tt)*) => {
{
use std::io::Write;
writeln!(std::io::stdout(), $($tokens)*).unwrap_or(())
}
}
} }
/// Outputs to standard error /// Outputs to standard error
@ -26,7 +31,12 @@ macro_rules! outln {
/// and stray printlns left by accident /// and stray printlns left by accident
#[macro_export] #[macro_export]
macro_rules! errln { macro_rules! errln {
($($tokens:tt)*) => { eprintln!($($tokens)*) } ($($tokens:tt)*) => {
{
use std::io::Write;
writeln!(std::io::stderr(), $($tokens)*).unwrap_or(())
}
}
} }
#[macro_export] #[macro_export]

View File

@ -1,6 +1,6 @@
[package] [package]
name = "nu-serde" name = "nu-serde"
version = "0.41.0" version = "0.42.0"
edition = "2018" edition = "2018"
authors = ["The Nu Project Contributors"] authors = ["The Nu Project Contributors"]
description = "Turn any value into a nu-protocol::Value with serde" description = "Turn any value into a nu-protocol::Value with serde"
@ -10,8 +10,8 @@ documentation = "https://docs.rs/nu-serde"
[dependencies] [dependencies]
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
nu-protocol = { version = "0.41.0", path = "../nu-protocol" } nu-protocol = { version = "0.42.0", path = "../nu-protocol" }
nu-source = { version = "0.41.0", path = "../nu-source" } nu-source = { version = "0.42.0", path = "../nu-source" }
serde = "1" serde = "1"
thiserror = "1" thiserror = "1"

View File

@ -4,7 +4,7 @@ description = "A source string characterizer for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-source" name = "nu-source"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false

View File

@ -4,12 +4,12 @@ description = "Nushell stream"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-stream" name = "nu-stream"
version = "0.41.0" version = "0.42.0"
[dependencies] [dependencies]
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
[features] [features]
stable = [] stable = []

View File

@ -4,7 +4,7 @@ description = "Nushell table printing"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-table" name = "nu-table"
version = "0.41.0" version = "0.42.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[[bin]] [[bin]]
@ -13,7 +13,7 @@ path = "src/main.rs"
[dependencies] [dependencies]
atty = "0.2.14" atty = "0.2.14"
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
regex = "1.4" regex = "1.4"
strip-ansi-escapes = "0.1.1" strip-ansi-escapes = "0.1.1"

View File

@ -4,16 +4,16 @@ description = "Support for writing Nushell tests"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-test-support" name = "nu-test-support"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-path = { version = "0.41.0", path="../nu-path" } nu-path = { version = "0.42.0", path="../nu-path" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
chrono = "0.4.19" chrono = "0.4.19"

View File

@ -4,15 +4,15 @@ description = "Extension traits for values in Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu-value-ext" name = "nu-value-ext"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
indexmap = { version="1.6.1", features=["serde-1"] } indexmap = { version="1.6.1", features=["serde-1"] }
itertools = "0.10.0" itertools = "0.10.0"

View File

@ -4,7 +4,7 @@ description = "A binary viewer plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_binaryview" name = "nu_plugin_binaryview"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
@ -13,12 +13,12 @@ doctest = false
crossterm = "0.19" crossterm = "0.19"
image = { version = "0.23.14", default_features = false, features = ["png", "jpeg"] } image = { version = "0.23.14", default_features = false, features = ["png", "jpeg"] }
neso = "0.5.0" neso = "0.5.0"
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" } nu-ansi-term = { version = "0.42.0", path="../nu-ansi-term" }
nu-pretty-hex = { version = "0.41.0", path="../nu-pretty-hex" } nu-pretty-hex = { version = "0.42.0", path="../nu-pretty-hex" }
rawkey = "0.1.3" rawkey = "0.1.3"
[build-dependencies] [build-dependencies]

View File

@ -4,18 +4,18 @@ description = "A plugin to display charts"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_chart" name = "nu_plugin_chart"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-data = { path="../nu-data", version = "0.41.0" } nu-data = { path="../nu-data", version = "0.42.0" }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" } nu-value-ext = { path="../nu-value-ext", version = "0.42.0" }
crossterm = "0.19.0" crossterm = "0.19.0"
tui = { version="0.15.0", default-features=false, features=["crossterm"] } tui = { version="0.15.0", default-features=false, features=["crossterm"] }

View File

@ -4,7 +4,7 @@ description = "A converter plugin to the bson format for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_from_bson" name = "nu_plugin_from_bson"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
@ -12,9 +12,9 @@ doctest = false
[dependencies] [dependencies]
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
bson = { version = "2.0.1", features = [ "chrono-0_4" ] } bson = { version = "2.0.1", features = [ "chrono-0_4" ] }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
[build-dependencies] [build-dependencies]

View File

@ -4,16 +4,16 @@ description = "A converter plugin to the mp4 format for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_from_mp4" name = "nu_plugin_from_mp4"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
tempfile = "3.2.0" tempfile = "3.2.0"
mp4 = "0.9.0" mp4 = "0.9.0"

View File

@ -4,17 +4,17 @@ description = "A converter plugin to the bson format for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_from_sqlite" name = "nu_plugin_from_sqlite"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
tempfile = "3.2.0" tempfile = "3.2.0"
[dependencies.rusqlite] [dependencies.rusqlite]

View File

@ -4,18 +4,18 @@ description = "A version incrementer plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_inc" name = "nu_plugin_inc"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
nu-test-support = { path="../nu-test-support", version = "0.41.0" } nu-test-support = { path="../nu-test-support", version = "0.42.0" }
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" } nu-value-ext = { path="../nu-value-ext", version = "0.42.0" }
semver = "0.11.0" semver = "0.11.0"

View File

@ -4,15 +4,15 @@ description = "A regex match plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_match" name = "nu_plugin_match"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
regex = "1.4.3" regex = "1.4.3"
[build-dependencies] [build-dependencies]

View File

@ -4,14 +4,14 @@ description = "query json files with gjson"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_query_json" name = "nu_plugin_query_json"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
gjson = "0.8.0" gjson = "0.8.0"
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-plugin = { version = "0.41.0", path="../nu-plugin" } nu-plugin = { version = "0.42.0", path="../nu-plugin" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }

View File

@ -4,17 +4,17 @@ description = "An S3 plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_s3" name = "nu_plugin_s3"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
futures = { version="0.3.12", features=["compat", "io-compat"] } futures = { version="0.3.12", features=["compat", "io-compat"] }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
s3handler = "0.7.5" s3handler = "0.7.5"
[build-dependencies] [build-dependencies]

View File

@ -4,17 +4,17 @@ description = "web scraping using css selector"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_selector" name = "nu_plugin_selector"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
scraper = "0.12.0" scraper = "0.12.0"
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-plugin = { version = "0.41.0", path="../nu-plugin" } nu-plugin = { version = "0.42.0", path="../nu-plugin" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
[dev-dependencies] [dev-dependencies]
indexmap = { version="1.7", features=["serde-1"] } indexmap = { version="1.7", features=["serde-1"] }

View File

@ -4,17 +4,17 @@ description = "A plugin to open files/URLs directly from Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_start" name = "nu_plugin_start"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
glob = "0.3.0" glob = "0.3.0"
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
url = "2.2.0" url = "2.2.0"
webbrowser = "0.5.5" webbrowser = "0.5.5"
@ -22,5 +22,5 @@ webbrowser = "0.5.5"
open = "1.4.0" open = "1.4.0"
[build-dependencies] [build-dependencies]
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }

View File

@ -4,19 +4,19 @@ description = "Text viewer plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_textview" name = "nu_plugin_textview"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-data = { path="../nu-data", version = "0.41.0" } nu-data = { path="../nu-data", version = "0.42.0" }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
bat = { version="0.18", default-features = false, features=["regex-fancy", "paging", "git"] } bat = { version="0.18", default-features = false, features=["regex-onig", "paging", "git"] }
term_size = "0.3.2" term_size = "0.3.2"
url = "2.2.0" url = "2.2.0"

View File

@ -4,17 +4,17 @@ description = "A converter plugin to the bson format for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_to_bson" name = "nu_plugin_to_bson"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
bson = { version = "2.0.1", features = [ "chrono-0_4" ] } bson = { version = "2.0.1", features = [ "chrono-0_4" ] }
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
num-traits = "0.2.14" num-traits = "0.2.14"
[features] [features]

View File

@ -4,17 +4,17 @@ description = "A converter plugin to the SQLite format for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_to_sqlite" name = "nu_plugin_to_sqlite"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
hex = "0.4.2" hex = "0.4.2"
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
nu-source = { path="../nu-source", version = "0.41.0" } nu-source = { path="../nu-source", version = "0.42.0" }
tempfile = "3.2.0" tempfile = "3.2.0"
[dependencies.rusqlite] [dependencies.rusqlite]

View File

@ -4,16 +4,16 @@ description = "Tree viewer plugin for Nushell"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_tree" name = "nu_plugin_tree"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
derive-new = "0.5.8" derive-new = "0.5.8"
nu-errors = { path="../nu-errors", version = "0.41.0" } nu-errors = { path="../nu-errors", version = "0.42.0" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { path="../nu-protocol", version = "0.41.0" } nu-protocol = { path="../nu-protocol", version = "0.42.0" }
ptree = { version = "0.4.0", default-features = false } ptree = { version = "0.4.0", default-features = false }

View File

@ -4,16 +4,16 @@ description = "Traverses xml"
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
name = "nu_plugin_xpath" name = "nu_plugin_xpath"
version = "0.41.0" version = "0.42.0"
[lib] [lib]
doctest = false doctest = false
[dependencies] [dependencies]
nu-errors = { version = "0.41.0", path="../nu-errors" } nu-errors = { version = "0.42.0", path="../nu-errors" }
nu-plugin = { path="../nu-plugin", version = "0.41.0" } nu-plugin = { path="../nu-plugin", version = "0.42.0" }
nu-protocol = { version = "0.41.0", path="../nu-protocol" } nu-protocol = { version = "0.42.0", path="../nu-protocol" }
nu-source = { version = "0.41.0", path="../nu-source" } nu-source = { version = "0.42.0", path="../nu-source" }
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] } bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
indexmap = { version="1.6.1", features=["serde-1"] } indexmap = { version="1.6.1", features=["serde-1"] }
@ -21,4 +21,4 @@ sxd-document = "0.3.2"
sxd-xpath = "0.4.2" sxd-xpath = "0.4.2"
[dev-dependencies] [dev-dependencies]
nu-test-support = { path="../nu-test-support", version = "0.41.0" } nu-test-support = { path="../nu-test-support", version = "0.42.0" }

View File

@ -86,7 +86,7 @@ version = "0.4.6"
[dependencies.cursive] [dependencies.cursive]
default-features = false default-features = false
features = ["pancurses-backend"] features = ["pancurses-backend"]
version = "0.41.0" version = "0.42.0"
[dependencies.futures-preview] [dependencies.futures-preview]
features = ["compat", "io-compat"] features = ["compat", "io-compat"]

View File

@ -53,3 +53,20 @@ fn plugins_are_declared_with_wix() {
assert_eq!(actual.out, "0"); assert_eq!(actual.out, "0");
} }
#[test]
#[cfg(not(windows))]
fn do_not_panic_if_broken_pipe() {
// `nu -h | false`
// used to panic with a BrokenPipe error
let child_output = std::process::Command::new("sh")
.arg("-c")
.arg(format!(
"{:?} -h | false",
nu_test_support::fs::executable_path()
))
.output()
.expect("failed to execute process");
assert!(child_output.stderr.is_empty());
}