2021-01-12 05:59:53 +01:00
|
|
|
[package]
|
2022-03-22 21:25:38 +01:00
|
|
|
authors = ["The Nushell Project Developers"]
|
2022-04-11 20:17:06 +02:00
|
|
|
description = "Nushell's built-in commands"
|
2022-03-22 21:25:38 +01:00
|
|
|
edition = "2021"
|
|
|
|
license = "MIT"
|
2021-01-12 05:59:53 +01:00
|
|
|
name = "nu-command"
|
2023-02-11 19:59:11 +01:00
|
|
|
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-command"
|
2023-04-26 01:05:23 +02:00
|
|
|
version = "0.79.1"
|
2021-12-11 21:08:17 +01:00
|
|
|
|
2021-09-02 03:29:43 +02:00
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
|
2023-02-12 23:22:00 +01:00
|
|
|
[lib]
|
|
|
|
bench = false
|
|
|
|
|
2021-09-02 03:29:43 +02:00
|
|
|
[dependencies]
|
2023-04-26 01:05:23 +02:00
|
|
|
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.79.1" }
|
|
|
|
nu-color-config = { path = "../nu-color-config", version = "0.79.1" }
|
|
|
|
nu-engine = { path = "../nu-engine", version = "0.79.1" }
|
|
|
|
nu-explore = { path = "../nu-explore", version = "0.79.1" }
|
|
|
|
nu-glob = { path = "../nu-glob", version = "0.79.1" }
|
|
|
|
nu-json = { path = "../nu-json", version = "0.79.1" }
|
|
|
|
nu-parser = { path = "../nu-parser", version = "0.79.1" }
|
|
|
|
nu-path = { path = "../nu-path", version = "0.79.1" }
|
|
|
|
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.79.1" }
|
|
|
|
nu-protocol = { path = "../nu-protocol", version = "0.79.1" }
|
|
|
|
nu-system = { path = "../nu-system", version = "0.79.1" }
|
|
|
|
nu-table = { path = "../nu-table", version = "0.79.1" }
|
|
|
|
nu-term-grid = { path = "../nu-term-grid", version = "0.79.1" }
|
|
|
|
nu-utils = { path = "../nu-utils", version = "0.79.1" }
|
2022-10-10 13:25:57 +02:00
|
|
|
num-format = { version = "0.4.3" }
|
2023-03-14 19:46:42 +01:00
|
|
|
nu-ansi-term = "0.47.0"
|
|
|
|
|
2021-09-10 03:06:44 +02:00
|
|
|
# Potential dependencies for extras
|
2023-02-11 19:59:11 +01:00
|
|
|
Inflector = "0.11"
|
2023-03-22 14:02:45 +01:00
|
|
|
alphanumeric-sort = "1.5.0"
|
2022-12-15 15:47:04 +01:00
|
|
|
atty = "0.2.14"
|
2023-01-13 14:16:14 +01:00
|
|
|
base64 = "0.21.0"
|
2022-07-03 20:31:50 +02:00
|
|
|
byteorder = "1.4.3"
|
2023-02-27 07:48:14 +01:00
|
|
|
bytesize = "1.2.0"
|
2022-12-01 20:25:13 +01:00
|
|
|
calamine = "0.19.1"
|
2023-05-04 19:14:41 +02:00
|
|
|
chrono = { version = "0.4.23", features = [
|
|
|
|
"std",
|
|
|
|
"unstable-locales",
|
|
|
|
], default-features = false }
|
2021-10-31 07:54:51 +01:00
|
|
|
chrono-humanize = "0.2.1"
|
2023-01-30 02:38:39 +01:00
|
|
|
chrono-tz = "0.8.1"
|
2023-04-14 22:14:57 +02:00
|
|
|
crossterm = "0.26"
|
2023-02-27 07:48:51 +01:00
|
|
|
csv = "1.2.0"
|
2023-05-04 19:14:41 +02:00
|
|
|
dialoguer = { default-features = false, features = ["fuzzy-select"], version = "0.10.3" }
|
2022-11-12 06:44:56 +01:00
|
|
|
digest = { default-features = false, version = "0.10.0" }
|
Pick up fix in dtparse for nanosec truncation noted at bottom of #8337 (#8805)
# Description
Pick up [enhancement in
`dtparse`](https://github.com/bspeice/dtparse/pull/41), to preserve
nanoseconds in string-to-date conversions.
# User-Facing Changes
An especially eagle-eyed user might notice that prior versions of
nushell were losing nanosecond precision when converting string format
date/time to datetime.
Before:
```nushell
〉'2023-03-02T01:02:03.987654321' | into datetime | date to-record
╭────────────┬───────────╮
│ year │ 2023 │
│ month │ 3 │
│ day │ 2 │
│ hour │ 1 │
│ minute │ 2 │
│ second │ 3 │
│ nanosecond │ 987654000 │
│ timezone │ -04:00 │
╰────────────┴───────────╯
```
Now, it just works(tm)
```nushell
〉'2023-03-02T01:02:03.987654321' | into datetime | date to-record
╭────────────┬───────────╮
│ year │ 2023 │
│ month │ 3 │
│ day │ 2 │
│ hour │ 1 │
│ minute │ 2 │
│ second │ 3 │
│ nanosecond │ 987654321 │
│ timezone │ -04:00 │
╰────────────┴───────────╯
```
# Tests + Formatting
Don't forget to add tests that cover your changes.
Make sure you've run and fixed any issues with these commands:
- [x] `cargo fmt --all -- --check` to check standard code formatting
(`cargo fmt --all` applies these changes)
- [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- [x] `cargo test --workspace` to check that all tests pass
Some (unrelated) tests did fail [^err]
- [x] `cargo run -- crates/nu-std/tests.nu` to run the tests for the
standard library
> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
# After Submitting
If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
# (Unrelated) test failures noted
[^err]: Several tests are failing, unrelated to this PR
```
failures:
---- modules::module_import_env_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; use main.nu foo; foo
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:316:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- modules::module_import_env_2 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; $env.FOO
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_2' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:341:9
---- overlays::overlay_use_do_cd_file_relative stdout ----
=== stderr
thread 'overlays::overlay_use_do_cd_file_relative' panicked at 'assertion failed: `(left == right)`
left: `"nushell"`,
right: `"test1"`', tests/overlays/mod.rs:919:9
---- overlays::overlay_use_dont_cd_overlay stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env test1/test2/spam.nu; $env.PWD | path basename
· ─────────┬─────────
· ╰── file not found
╰────
thread 'overlays::overlay_use_dont_cd_overlay' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"overlay_use_dont_cd_overlay"`', tests/overlays/mod.rs:946:9
---- parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol.nu; $env.FOO
· ─────┬────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"good"`', tests/parsing/mod.rs:177:9
---- parsing::parse_file_relative_to_parsed_file_simple stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol/lol.nu; $env.LOL
· ───────┬──────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_simple' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"lol"`', tests/parsing/mod.rs:99:9
---- shell::const_nu_lib_dirs_relative stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[main.nu:1:1]
1 │ const NU_LIB_DIRS = [ 'scripts' ]
2 │ source-env foo.nu
· ───┬──
thread 'shell::const_nu_lib_dirs_relative' panicked at 'assertion failed: outcome.err.is_empty()', tests/shell/mod.rs:166:9
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"AndrásWithKitKat"`', tests/shell/pipeline/commands/external.rs:198:13
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"jt_likes_cake.txt"`', tests/shell/pipeline/commands/external.rs:173:13
failures:
modules::module_import_env_1
modules::module_import_env_2
overlays::overlay_use_do_cd_file_relative
overlays::overlay_use_dont_cd_overlay
parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1
parsing::parse_file_relative_to_parsed_file_simple
shell::const_nu_lib_dirs_relative
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings
test result: FAILED. 386 passed; 9 failed; 20 ignored; 0 measured; 0 filtered out; finished in 98.06s
error: test failed, to rerun pass `-p nu --test main`
failures:
---- modules::module_import_env_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; use main.nu foo; foo
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:316:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- modules::module_import_env_2 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; $env.FOO
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_2' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:341:9
---- overlays::overlay_use_do_cd_file_relative stdout ----
=== stderr
thread 'overlays::overlay_use_do_cd_file_relative' panicked at 'assertion failed: `(left == right)`
left: `"nushell"`,
right: `"test1"`', tests/overlays/mod.rs:919:9
---- overlays::overlay_use_dont_cd_overlay stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env test1/test2/spam.nu; $env.PWD | path basename
· ─────────┬─────────
· ╰── file not found
╰────
thread 'overlays::overlay_use_dont_cd_overlay' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"overlay_use_dont_cd_overlay"`', tests/overlays/mod.rs:946:9
---- parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol.nu; $env.FOO
· ─────┬────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"good"`', tests/parsing/mod.rs:177:9
---- parsing::parse_file_relative_to_parsed_file_simple stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol/lol.nu; $env.LOL
· ───────┬──────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_simple' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"lol"`', tests/parsing/mod.rs:99:9
---- shell::const_nu_lib_dirs_relative stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[main.nu:1:1]
1 │ const NU_LIB_DIRS = [ 'scripts' ]
2 │ source-env foo.nu
· ───┬──
thread 'shell::const_nu_lib_dirs_relative' panicked at 'assertion failed: outcome.err.is_empty()', tests/shell/mod.rs:166:9
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"AndrásWithKitKat"`', tests/shell/pipeline/commands/external.rs:198:13
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"jt_likes_cake.txt"`', tests/shell/pipeline/commands/external.rs:173:13
failures:
modules::module_import_env_1
modules::module_import_env_2
overlays::overlay_use_do_cd_file_relative
overlays::overlay_use_dont_cd_overlay
parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1
parsing::parse_file_relative_to_parsed_file_simple
shell::const_nu_lib_dirs_relative
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings
test result: FAILED. 386 passed; 9 failed; 20 ignored; 0 measured; 0 filtered out; finished in 98.06s
error: test failed, to rerun pass `-p nu --test main`
failures:
---- modules::module_import_env_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; use main.nu foo; foo
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:316:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- modules::module_import_env_2 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env main.nu; $env.FOO
· ───┬───
· ╰── file not found
╰────
thread 'modules::module_import_env_2' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"foo"`', tests/modules/mod.rs:341:9
---- overlays::overlay_use_do_cd_file_relative stdout ----
=== stderr
thread 'overlays::overlay_use_do_cd_file_relative' panicked at 'assertion failed: `(left == right)`
left: `"nushell"`,
right: `"test1"`', tests/overlays/mod.rs:919:9
---- overlays::overlay_use_dont_cd_overlay stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env test1/test2/spam.nu; $env.PWD | path basename
· ─────────┬─────────
· ╰── file not found
╰────
thread 'overlays::overlay_use_dont_cd_overlay' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"overlay_use_dont_cd_overlay"`', tests/overlays/mod.rs:946:9
---- parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1 stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol.nu; $env.FOO
· ─────┬────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"good"`', tests/parsing/mod.rs:177:9
---- parsing::parse_file_relative_to_parsed_file_simple stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[source:1:1]
1 │ source-env lol/lol/lol.nu; $env.LOL
· ───────┬──────
· ╰── file not found
╰────
thread 'parsing::parse_file_relative_to_parsed_file_simple' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"lol"`', tests/parsing/mod.rs:99:9
---- shell::const_nu_lib_dirs_relative stdout ----
=== stderr
Error: nu::shell::file_not_found
× File not found
╭─[main.nu:1:1]
1 │ const NU_LIB_DIRS = [ 'scripts' ]
2 │ source-env foo.nu
· ───┬──
thread 'shell::const_nu_lib_dirs_relative' panicked at 'assertion failed: outcome.err.is_empty()', tests/shell/mod.rs:166:9
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"AndrásWithKitKat"`', tests/shell/pipeline/commands/external.rs:198:13
---- shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings stdout ----
=== stderr
thread 'shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings' panicked at 'assertion failed: `(left == right)`
left: `""`,
right: `"jt_likes_cake.txt"`', tests/shell/pipeline/commands/external.rs:173:13
failures:
modules::module_import_env_1
modules::module_import_env_2
overlays::overlay_use_do_cd_file_relative
overlays::overlay_use_dont_cd_overlay
parsing::parse_file_relative_to_parsed_file_dont_use_cwd_1
parsing::parse_file_relative_to_parsed_file_simple
shell::const_nu_lib_dirs_relative
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_lines
shell::pipeline::commands::external::it_evaluation::takes_rows_of_nu_value_strings
test result: FAILED. 386 passed; 9 failed; 20 ignored; 0 measured; 0 filtered out; finished in 98.06s
error: test failed, to rerun pass `-p nu --test main`
```
2023-04-14 14:24:46 +02:00
|
|
|
dtparse = "1.4.0"
|
2022-02-03 18:35:06 +01:00
|
|
|
encoding_rs = "0.8.30"
|
2023-01-23 19:57:40 +01:00
|
|
|
fancy-regex = "0.11.0"
|
2022-02-03 18:35:06 +01:00
|
|
|
filesize = "0.2.0"
|
2022-04-07 13:44:05 +02:00
|
|
|
filetime = "0.2.15"
|
2023-02-06 10:59:58 +01:00
|
|
|
fs_extra = "1.3.0"
|
2021-01-12 05:59:53 +01:00
|
|
|
htmlescape = "0.3.1"
|
2023-01-13 14:16:14 +01:00
|
|
|
indexmap = { version = "1.7", features = ["serde-1"] }
|
2023-01-11 02:57:48 +01:00
|
|
|
indicatif = "0.17.2"
|
2022-06-06 13:55:23 +02:00
|
|
|
is-root = "0.1.2"
|
2022-02-03 18:35:06 +01:00
|
|
|
itertools = "0.10.0"
|
|
|
|
log = "0.4.14"
|
2023-04-14 22:14:57 +02:00
|
|
|
lscolors = { version = "0.14", default-features = false, features = ["nu-ansi-term"] }
|
2022-02-03 18:35:06 +01:00
|
|
|
md5 = { package = "md-5", version = "0.10.0" }
|
2023-04-06 22:39:54 +02:00
|
|
|
miette = { version = "5.7.0", features = ["fancy-no-backtrace"] }
|
2022-02-03 18:35:06 +01:00
|
|
|
mime = "0.3.16"
|
2022-12-27 19:46:23 +01:00
|
|
|
mime_guess = "2.0.4"
|
2023-03-09 06:45:58 +01:00
|
|
|
notify = "4.0.17"
|
2022-02-03 18:35:06 +01:00
|
|
|
num = { version = "0.4.0", optional = true }
|
2022-08-02 22:52:04 +02:00
|
|
|
num-traits = "0.2.14"
|
2023-01-12 00:00:44 +01:00
|
|
|
once_cell = "1.17"
|
2023-04-17 07:05:40 +02:00
|
|
|
open = "4.0.2"
|
2022-02-03 18:35:06 +01:00
|
|
|
pathdiff = "0.2.1"
|
2022-12-29 15:55:00 +01:00
|
|
|
powierza-coefficient = "1.0.2"
|
2023-03-20 18:46:28 +01:00
|
|
|
quick-xml = "0.28"
|
2022-02-03 18:35:06 +01:00
|
|
|
rand = "0.8"
|
2023-03-06 04:32:16 +01:00
|
|
|
rayon = "1.7.0"
|
2023-01-23 02:44:10 +01:00
|
|
|
regex = "1.7.1"
|
2023-05-04 19:14:41 +02:00
|
|
|
ureq = { version = "2.6.2", default-features = false, features = [
|
|
|
|
"json",
|
|
|
|
"charset",
|
|
|
|
"native-tls",
|
|
|
|
"gzip",
|
|
|
|
] }
|
2023-03-05 23:48:13 +01:00
|
|
|
native-tls = "0.2.11"
|
2023-02-13 03:35:09 +01:00
|
|
|
roxmltree = "0.18.0"
|
2023-03-06 04:36:14 +01:00
|
|
|
rust-embed = "6.6.0"
|
2022-09-23 20:09:31 +02:00
|
|
|
same-file = "1.0.6"
|
2023-01-13 14:16:14 +01:00
|
|
|
serde = { version = "1.0.123", features = ["derive"] }
|
2023-04-26 15:15:42 +02:00
|
|
|
serde_json = "1.0"
|
2022-02-03 18:35:06 +01:00
|
|
|
serde_urlencoded = "0.7.0"
|
2022-08-10 21:56:15 +02:00
|
|
|
serde_yaml = "0.9.4"
|
2022-02-03 18:35:06 +01:00
|
|
|
sha2 = "0.10.0"
|
2022-05-16 03:57:25 +02:00
|
|
|
# Disable default features b/c the default features build Git (very slow to compile)
|
2023-02-11 19:59:11 +01:00
|
|
|
percent-encoding = "2.2.0"
|
|
|
|
rusqlite = { version = "0.28.0", features = ["bundled"], optional = true }
|
2023-03-15 18:33:09 +01:00
|
|
|
sqlparser = { version = "0.32.0", features = ["serde"], optional = true }
|
2023-03-04 23:48:34 +01:00
|
|
|
sysinfo = "0.28.2"
|
2023-04-26 20:56:10 +02:00
|
|
|
tabled = "0.12.0"
|
2022-07-11 18:18:06 +02:00
|
|
|
terminal_size = "0.2.1"
|
2022-06-30 22:55:01 +02:00
|
|
|
thiserror = "1.0.31"
|
2022-07-11 18:18:06 +02:00
|
|
|
titlecase = "2.0.0"
|
2023-02-06 21:15:14 +01:00
|
|
|
toml = "0.7.1"
|
2023-02-11 19:59:11 +01:00
|
|
|
unicode-segmentation = "1.10.0"
|
|
|
|
unicode-width = "0.1.10"
|
2022-02-03 18:35:06 +01:00
|
|
|
url = "2.2.1"
|
2023-02-22 00:32:52 +01:00
|
|
|
uuid = { version = "1.3.0", features = ["v4"] }
|
2023-01-13 14:16:14 +01:00
|
|
|
wax = { version = "0.5.0" }
|
2023-02-11 19:59:11 +01:00
|
|
|
which = { version = "4.4.0", optional = true }
|
`string | fill` counts clusters, not graphemes; and doesn't count ANSI escape codes (#8134)
Enhancement of new `fill` command (#7846) to handle content including
ANSI escape codes for formatting or multi-code-point Unicode grapheme
clusters.
In both of these cases, the content is (many) bytes longer than its
visible length, and `fill` was counting the extra bytes so not adding
enough fill characters.
# Description
This script:
```rust
# the teacher emoji `\u{1F9D1}\u{200D}\u{1F3EB}` is 3 code points, but only 1 print position wide.
echo "This output should be 3 print positions wide, with leading and trailing `+`"
$"\u{1F9D1}\u{200D}\u{1F3EB}" | fill -c "+" -w 3 -a "c"
echo "This output should be 3 print positions wide, with leading and trailing `+`"
$"(ansi green)a(ansi reset)" | fill -c "+" -w 3 -a c
echo ""
```
Was producing this output:
```rust
This output should be 3 print positions wide, with leading and trailing `+`
🧑🏫
This output should be 3 print positions wide, with leading and trailing `+`
a
```
After this PR, it produces this output:
```rust
This output should be 3 print positions wide, with leading and trailing `+`
+🧑🏫+
This output should be 3 print positions wide, with leading and trailing `+`
+a+
```
# User-Facing Changes
Users may have to undo fixes they may have introduced to work around the
former behavior. I have one such in my prompt string that I can now
revert.
# Tests + Formatting
Don't forget to add tests that cover your changes.
-- Done
Make sure you've run and fixed any issues with these commands:
- [x] `cargo fmt --all -- --check` to check standard code formatting
(`cargo fmt --all` applies these changes)
- [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- [x] `cargo test --workspace` to check that all tests pass
# After Submitting
`fill` command not documented in the book, and it still talks about `str
lpad/rpad`. I'll fix.
Note added dependency on a new library `print-positions`, which is an
iterator that yields a complete print position (cluster + Ansi sequence)
per call. Should this be vendored?
2023-02-20 13:32:20 +01:00
|
|
|
print-positions = "0.6.1"
|
2023-04-28 14:55:48 +02:00
|
|
|
os_pipe = "1.1.3"
|
2021-05-12 03:01:31 +02:00
|
|
|
|
2022-10-07 20:54:36 +02:00
|
|
|
[target.'cfg(windows)'.dependencies]
|
2023-04-14 14:15:01 +02:00
|
|
|
winreg = "0.50.0"
|
2022-10-07 20:54:36 +02:00
|
|
|
|
2021-01-12 05:59:53 +01:00
|
|
|
[target.'cfg(unix)'.dependencies]
|
2023-02-11 19:59:11 +01:00
|
|
|
libc = "0.2"
|
2023-04-14 14:15:22 +02:00
|
|
|
umask = "2.1.0"
|
2021-02-05 21:54:54 +01:00
|
|
|
users = "0.11.0"
|
2021-01-12 05:59:53 +01:00
|
|
|
|
2022-03-26 19:21:19 +01:00
|
|
|
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies.trash]
|
|
|
|
optional = true
|
2023-02-11 19:59:11 +01:00
|
|
|
version = "3.0.1"
|
2022-03-26 19:21:19 +01:00
|
|
|
|
2021-11-23 09:14:40 +01:00
|
|
|
[dependencies.polars]
|
2021-12-18 18:45:09 +01:00
|
|
|
features = [
|
2022-08-14 14:06:31 +02:00
|
|
|
"arg_where",
|
|
|
|
"checked_arithmetic",
|
|
|
|
"concat_str",
|
|
|
|
"cross_join",
|
|
|
|
"csv-file",
|
|
|
|
"cum_agg",
|
|
|
|
"default",
|
2023-02-11 19:59:11 +01:00
|
|
|
"dtype-categorical",
|
2022-08-14 14:06:31 +02:00
|
|
|
"dtype-datetime",
|
|
|
|
"dtype-struct",
|
|
|
|
"dynamic_groupby",
|
2022-09-13 01:30:20 +02:00
|
|
|
"ipc",
|
2022-08-14 14:06:31 +02:00
|
|
|
"is_in",
|
|
|
|
"json",
|
|
|
|
"lazy",
|
|
|
|
"object",
|
|
|
|
"parquet",
|
|
|
|
"random",
|
|
|
|
"rolling_window",
|
|
|
|
"rows",
|
|
|
|
"serde",
|
|
|
|
"serde-lazy",
|
|
|
|
"strings",
|
|
|
|
"strings",
|
|
|
|
"to_dummies",
|
2021-12-18 18:45:09 +01:00
|
|
|
]
|
2023-02-11 19:59:11 +01:00
|
|
|
optional = true
|
2023-05-08 17:42:53 +02:00
|
|
|
version = "0.28.0"
|
2021-11-23 09:14:40 +01:00
|
|
|
|
2022-06-03 18:37:27 +02:00
|
|
|
[target.'cfg(windows)'.dependencies.windows]
|
2023-01-23 19:57:40 +01:00
|
|
|
features = ["Win32_Foundation", "Win32_Storage_FileSystem", "Win32_System_SystemServices"]
|
2023-04-05 23:54:26 +02:00
|
|
|
version = "0.48.0"
|
2022-06-03 18:37:27 +02:00
|
|
|
|
2021-10-10 06:13:15 +02:00
|
|
|
[features]
|
2023-02-11 19:59:11 +01:00
|
|
|
dataframe = ["num", "polars", "sqlparser"]
|
2021-11-02 21:56:00 +01:00
|
|
|
plugin = ["nu-parser/plugin"]
|
2023-05-04 19:14:41 +02:00
|
|
|
sqlite = [
|
|
|
|
"rusqlite",
|
|
|
|
] # TODO: given that rusqlite is included in reedline, should we just always include it?
|
2023-02-11 19:59:11 +01:00
|
|
|
trash-support = ["trash"]
|
|
|
|
which-support = ["which"]
|
2021-01-12 05:59:53 +01:00
|
|
|
|
|
|
|
[dev-dependencies]
|
2023-04-26 01:05:23 +02:00
|
|
|
nu-test-support = { path = "../nu-test-support", version = "0.79.1" }
|
Bump mockito from 0.32.5 to 1.0.0 (#8426)
Bumps [mockito](https://github.com/lipanski/mockito) from 0.32.5 to
1.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lipanski/mockito/releases">mockito's
releases</a>.</em></p>
<blockquote>
<h2>1.0.0</h2>
<p>:balloon: 7 years and 63 releases later, it's finally time for the
1.0 :balloon:</p>
<h2>Changes</h2>
<ul>
<li><strong>[Breaking]</strong> The legacy interface was removed in this
version</li>
<li><strong>[Breaking]</strong> <code>Mock::with_body_from_fn</code> was
renamed to <code>Mock::with_chunked_body</code> - the former is still
supported with a deprecation warning</li>
<li>Mocks are only cleared when the server is dropped, not when the mock
is dropped - this means you <strong>don't have to assign mocks to
variables any more</strong> (unless you want to call other methods on
them)</li>
<li>Introduced the <code>Mock::remove</code> and
<code>Mock::remove_async</code> methods to remove mocks on demand</li>
</ul>
<h2>Major changes since 0.31</h2>
<ul>
<li>Tests can now run in parallel</li>
<li>Support for HTTP2</li>
<li>An async interface for all actions (though the sync interface is
also available)</li>
<li>Mock multiple server/hosts at the same time</li>
</ul>
<p>For a list of all the changes please check the <a
href="https://github.com/lipanski/mockito/releases">release log</a>.</p>
<h2>Migrating to the new API</h2>
<p>Legacy API:</p>
<pre lang="rust"><code>let m1 = mockito::mock("GET",
"/hello").with_body("hello").create();
let m2 = mockito::mock("GET",
"/bye").with_body("bye").create();
<p>// Use one of these to configure your client
let host = mockito:server_address();
let url = mockito::server_url();
</code></pre></p>
<p>New API:</p>
<pre lang="rust"><code>let mut server = mockito::Server::new();
server.mock("GET",
"/hello").with_body("hello").create();
server.mock("GET",
"/bye").with_body("bye").create();
<p>// Use one of these to configure your client
let host = server.host_with_port();
let url = server.url();
</code></pre></p>
<blockquote>
<p>If you can't migrate to the new API in one go, consider using version
0.32.5, which supports both the legacy API as well as the new API.</p>
</blockquote>
<h2>Migrating to the async API</h2>
<p>In order to write async tests, you'll need to use the
<code>_async</code> methods:</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lipanski/mockito/commit/9a07811955104fbe5e4f4fd4a35571bc37d06db1"><code>9a07811</code></a>
Bump to 1.0.0</li>
<li><a
href="https://github.com/lipanski/mockito/commit/000c435f0e0e6b3d484e6d0feeffe9608fe7190e"><code>000c435</code></a>
Merge pull request <a
href="https://redirect.github.com/lipanski/mockito/issues/165">#165</a>
from lipanski/one-zero</li>
<li><a
href="https://github.com/lipanski/mockito/commit/68c56290a142a64252514ee183ed25ad4b3b46bd"><code>68c5629</code></a>
Remove mocks when the server is dropped, not when the mock is
dropped</li>
<li><a
href="https://github.com/lipanski/mockito/commit/ac9042d02286b3e5fd5e0187a0edf4d20e09b5d7"><code>ac9042d</code></a>
Add the Windows line-ending fix to the test runner</li>
<li><a
href="https://github.com/lipanski/mockito/commit/0ce9788e00c4d9b671ef5a49deb1925556445645"><code>0ce9788</code></a>
Disable color tests on Windows</li>
<li><a
href="https://github.com/lipanski/mockito/commit/ad2ebcbaab7697119f4f5ac7d798999b7be5df5a"><code>ad2ebcb</code></a>
Fine-tuning the Windows test runner</li>
<li><a
href="https://github.com/lipanski/mockito/commit/abb9e91d7180f85899760e2c26afd93b39e10170"><code>abb9e91</code></a>
Run Windows tests on Github Actions</li>
<li><a
href="https://github.com/lipanski/mockito/commit/5a7c96eaecb2c160ceb6cddaa26eec2fb7e27ac0"><code>5a7c96e</code></a>
Rename Mock::with_body_from_fn to Mock::with_chunked_body</li>
<li><a
href="https://github.com/lipanski/mockito/commit/ed338faedf5d701e04d6a46af07911cecf06377c"><code>ed338fa</code></a>
Uncomment threads tests</li>
<li><a
href="https://github.com/lipanski/mockito/commit/6e2064de9516a06d8d252ffe61d570e5915123d3"><code>6e2064d</code></a>
Drop legacy interface</li>
<li>Additional commits viewable in <a
href="https://github.com/lipanski/mockito/compare/0.32.5...1.0.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mockito&package-manager=cargo&previous-version=0.32.5&new-version=1.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 11:40:49 +01:00
|
|
|
mockito = "1.0.0"
|
2022-10-29 19:39:27 +02:00
|
|
|
|
2022-02-02 21:59:01 +01:00
|
|
|
dirs-next = "2.0.0"
|
2023-02-11 19:59:11 +01:00
|
|
|
hamcrest2 = "0.3.0"
|
2022-02-02 21:59:01 +01:00
|
|
|
quickcheck = "1.0.3"
|
2022-02-04 07:47:18 +01:00
|
|
|
quickcheck_macros = "1.0.0"
|
2023-03-20 18:27:29 +01:00
|
|
|
rstest = { version = "0.17.0", default-features = false }
|