2019-05-10 16:59:12 +00:00
|
|
|
[package]
|
2022-03-13 18:30:27 +00:00
|
|
|
authors = ["The Nushell Project Developers"]
|
2023-05-20 12:57:51 +00:00
|
|
|
build = "scripts/build.rs"
|
2020-07-05 20:12:44 +00:00
|
|
|
default-run = "nu"
|
2020-04-06 07:16:14 +00:00
|
|
|
description = "A new type of shell"
|
2020-07-05 20:12:44 +00:00
|
|
|
documentation = "https://www.nushell.sh/book/"
|
2023-01-05 12:24:42 +00:00
|
|
|
edition = "2021"
|
2020-07-05 20:12:44 +00:00
|
|
|
exclude = ["images"]
|
|
|
|
homepage = "https://www.nushell.sh"
|
|
|
|
license = "MIT"
|
|
|
|
name = "nu"
|
2019-07-16 19:17:46 +00:00
|
|
|
repository = "https://github.com/nushell/nushell"
|
2024-02-08 19:29:36 +00:00
|
|
|
rust-version = "1.74.1"
|
2024-03-06 22:08:14 +00:00
|
|
|
version = "0.91.1"
|
2021-06-30 01:42:56 +00:00
|
|
|
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
|
2022-11-23 16:46:06 +00:00
|
|
|
[package.metadata.binstall]
|
|
|
|
pkg-url = "{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }"
|
|
|
|
pkg-fmt = "tgz"
|
|
|
|
|
|
|
|
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
|
|
|
|
pkg-fmt = "zip"
|
|
|
|
|
2021-08-25 19:29:36 +00:00
|
|
|
[workspace]
|
2021-10-28 06:12:33 +00:00
|
|
|
members = [
|
2024-03-07 22:40:31 +00:00
|
|
|
"crates/nu-cli",
|
|
|
|
"crates/nu-engine",
|
|
|
|
"crates/nu-parser",
|
|
|
|
"crates/nu-system",
|
|
|
|
"crates/nu-cmd-base",
|
|
|
|
"crates/nu-cmd-extra",
|
|
|
|
"crates/nu-cmd-lang",
|
|
|
|
"crates/nu-cmd-dataframe",
|
|
|
|
"crates/nu-command",
|
|
|
|
"crates/nu-color-config",
|
|
|
|
"crates/nu-explore",
|
|
|
|
"crates/nu-json",
|
|
|
|
"crates/nu-lsp",
|
|
|
|
"crates/nu-pretty-hex",
|
|
|
|
"crates/nu-protocol",
|
|
|
|
"crates/nu-plugin",
|
2024-03-23 18:29:54 +00:00
|
|
|
"crates/nu-plugin-test-support",
|
2024-03-07 22:40:31 +00:00
|
|
|
"crates/nu_plugin_inc",
|
|
|
|
"crates/nu_plugin_gstat",
|
|
|
|
"crates/nu_plugin_example",
|
|
|
|
"crates/nu_plugin_query",
|
|
|
|
"crates/nu_plugin_custom_values",
|
|
|
|
"crates/nu_plugin_formats",
|
|
|
|
"crates/nu-std",
|
|
|
|
"crates/nu-table",
|
|
|
|
"crates/nu-term-grid",
|
|
|
|
"crates/nu-test-support",
|
|
|
|
"crates/nu-utils",
|
2021-10-28 06:12:33 +00:00
|
|
|
]
|
2021-08-25 19:29:36 +00:00
|
|
|
|
2024-03-07 22:40:31 +00:00
|
|
|
[workspace.dependencies]
|
2024-03-23 23:46:02 +00:00
|
|
|
alphanumeric-sort = "1.5"
|
|
|
|
ansi-str = "0.8"
|
|
|
|
base64 = "0.22"
|
|
|
|
bracoxide = "0.1.2"
|
|
|
|
byteorder = "1.5"
|
|
|
|
bytesize = "1.3"
|
|
|
|
calamine = "0.24.0"
|
|
|
|
chardetng = "0.1.17"
|
2024-03-07 22:40:31 +00:00
|
|
|
chrono = { default-features = false, version = "0.4" }
|
2024-03-23 23:46:02 +00:00
|
|
|
chrono-humanize = "0.2.3"
|
|
|
|
chrono-tz = "0.8"
|
|
|
|
crossbeam-channel = "0.5.8"
|
2024-03-07 22:40:31 +00:00
|
|
|
crossterm = "0.27"
|
2024-03-23 23:46:02 +00:00
|
|
|
csv = "1.3"
|
2024-03-07 22:40:31 +00:00
|
|
|
ctrlc = "3.4"
|
2024-03-23 23:46:02 +00:00
|
|
|
dialoguer = { default-features = false, version = "0.11" }
|
|
|
|
digest = { default-features = false, version = "0.10" }
|
|
|
|
dirs-next = "2.0"
|
|
|
|
dtparse = "2.0"
|
|
|
|
encoding_rs = "0.8"
|
2024-03-07 22:40:31 +00:00
|
|
|
fancy-regex = "0.13"
|
2024-03-23 23:46:02 +00:00
|
|
|
filesize = "0.2"
|
|
|
|
filetime = "0.2"
|
|
|
|
fs_extra = "1.3"
|
|
|
|
fuzzy-matcher = "0.3"
|
|
|
|
hamcrest2 = "0.3"
|
|
|
|
heck = "0.5.0"
|
|
|
|
human-date-parser = "0.1.1"
|
|
|
|
indexmap = "2.2"
|
|
|
|
indicatif = "0.17"
|
|
|
|
is_executable = "1.0"
|
|
|
|
itertools = "0.12"
|
|
|
|
libc = "0.2"
|
|
|
|
libproc = "0.14"
|
2024-03-07 22:40:31 +00:00
|
|
|
log = "0.4"
|
2024-03-23 23:46:02 +00:00
|
|
|
lru = "0.12"
|
|
|
|
lscolors = { version = "0.17", default-features = false }
|
|
|
|
lsp-server = "0.7.5"
|
|
|
|
lsp-types = "0.95.0"
|
|
|
|
mach2 = "0.4"
|
|
|
|
md5 = { version = "0.10", package = "md-5"}
|
2024-03-13 01:35:40 +00:00
|
|
|
miette = "7.2"
|
2024-03-23 23:46:02 +00:00
|
|
|
mime = "0.3"
|
|
|
|
mime_guess = "2.0"
|
|
|
|
mockito = { version = "1.4", default-features = false }
|
|
|
|
native-tls = "0.2"
|
2024-03-07 22:40:31 +00:00
|
|
|
nix = { version = "0.27", default-features = false }
|
2024-03-23 23:46:02 +00:00
|
|
|
notify-debouncer-full = { version = "0.3", default-features = false }
|
2024-03-07 22:40:31 +00:00
|
|
|
nu-ansi-term = "0.50.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
num-format = "0.4"
|
|
|
|
num-traits = "0.2"
|
|
|
|
omnipath = "0.1"
|
2024-03-07 22:40:31 +00:00
|
|
|
once_cell = "1.18"
|
2024-03-23 23:46:02 +00:00
|
|
|
open = "5.1"
|
|
|
|
os_pipe = "1.1"
|
2024-03-07 22:40:31 +00:00
|
|
|
pathdiff = "0.2"
|
|
|
|
percent-encoding = "2"
|
2024-03-23 23:46:02 +00:00
|
|
|
print-positions = "0.6"
|
|
|
|
procfs = "0.16.0"
|
|
|
|
pwd = "1.3"
|
|
|
|
quick-xml = "0.31.0"
|
|
|
|
quickcheck = "1.0"
|
|
|
|
quickcheck_macros = "1.0"
|
|
|
|
rand = "0.8"
|
|
|
|
ratatui = "0.26"
|
2024-03-27 06:44:17 +00:00
|
|
|
rayon = "1.10"
|
2024-03-07 22:40:31 +00:00
|
|
|
reedline = "0.30.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
regex = "1.9.5"
|
|
|
|
ropey = "1.6.1"
|
|
|
|
roxmltree = "0.19"
|
2024-03-07 22:40:31 +00:00
|
|
|
rstest = { version = "0.18", default-features = false }
|
2024-03-23 23:46:02 +00:00
|
|
|
rusqlite = "0.31"
|
|
|
|
rust-embed = "8.2.0"
|
|
|
|
same-file = "1.0"
|
|
|
|
serde = { version = "1.0", default-features = false }
|
2024-03-07 22:40:31 +00:00
|
|
|
serde_json = "1.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
serde_urlencoded = "0.7.1"
|
|
|
|
serde_yaml = "0.9"
|
|
|
|
sha2 = "0.10"
|
|
|
|
strip-ansi-escapes = "0.2.0"
|
2024-03-07 22:40:31 +00:00
|
|
|
sysinfo = "0.30"
|
2024-03-23 23:46:02 +00:00
|
|
|
tabled = { version = "0.14.0", default-features = false }
|
2024-03-07 22:40:31 +00:00
|
|
|
tempfile = "3.10"
|
2024-03-23 23:46:02 +00:00
|
|
|
terminal_size = "0.3"
|
|
|
|
titlecase = "2.0"
|
|
|
|
toml = "0.8"
|
|
|
|
trash = "3.3"
|
|
|
|
umask = "2.1"
|
2024-03-07 22:40:31 +00:00
|
|
|
unicode-segmentation = "1.11"
|
2024-03-23 23:46:02 +00:00
|
|
|
unicode-width = "0.1"
|
|
|
|
ureq = { version = "2.9", default-features = false }
|
|
|
|
url = "2.2"
|
2024-03-25 21:51:50 +00:00
|
|
|
uu_cp = "0.0.25"
|
|
|
|
uu_mkdir = "0.0.25"
|
|
|
|
uu_mktemp = "0.0.25"
|
|
|
|
uu_mv = "0.0.25"
|
|
|
|
uu_whoami = "0.0.25"
|
|
|
|
uu_uname = "0.0.25"
|
|
|
|
uucore = "0.0.25"
|
2024-03-20 01:45:18 +00:00
|
|
|
uuid = "1.8.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
v_htmlescape = "0.15.0"
|
|
|
|
wax = "0.6"
|
2024-03-07 22:40:31 +00:00
|
|
|
which = "6.0.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
windows = "0.54"
|
|
|
|
winreg = "0.52"
|
2024-03-07 22:40:31 +00:00
|
|
|
|
2021-06-30 01:42:56 +00:00
|
|
|
[dependencies]
|
2024-03-06 22:08:14 +00:00
|
|
|
nu-cli = { path = "./crates/nu-cli", version = "0.91.1" }
|
|
|
|
nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.91.1" }
|
|
|
|
nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.91.1" }
|
|
|
|
nu-cmd-dataframe = { path = "./crates/nu-cmd-dataframe", version = "0.91.1", features = [
|
2024-03-07 22:40:31 +00:00
|
|
|
"dataframe",
|
2024-01-20 14:04:06 +00:00
|
|
|
], optional = true }
|
2024-03-10 16:29:02 +00:00
|
|
|
nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.91.1" }
|
2024-03-06 22:08:14 +00:00
|
|
|
nu-command = { path = "./crates/nu-command", version = "0.91.1" }
|
|
|
|
nu-engine = { path = "./crates/nu-engine", version = "0.91.1" }
|
|
|
|
nu-explore = { path = "./crates/nu-explore", version = "0.91.1" }
|
|
|
|
nu-lsp = { path = "./crates/nu-lsp/", version = "0.91.1" }
|
|
|
|
nu-parser = { path = "./crates/nu-parser", version = "0.91.1" }
|
|
|
|
nu-path = { path = "./crates/nu-path", version = "0.91.1" }
|
|
|
|
nu-plugin = { path = "./crates/nu-plugin", optional = true, version = "0.91.1" }
|
|
|
|
nu-protocol = { path = "./crates/nu-protocol", version = "0.91.1" }
|
|
|
|
nu-std = { path = "./crates/nu-std", version = "0.91.1" }
|
|
|
|
nu-utils = { path = "./crates/nu-utils", version = "0.91.1" }
|
2023-12-21 15:41:31 +00:00
|
|
|
|
2024-03-07 22:40:31 +00:00
|
|
|
reedline = { workspace = true, features = ["bashisms", "sqlite"] }
|
2022-09-19 14:28:36 +00:00
|
|
|
|
2024-03-07 22:40:31 +00:00
|
|
|
crossterm = { workspace = true }
|
|
|
|
ctrlc = { workspace = true }
|
|
|
|
log = { workspace = true }
|
|
|
|
miette = { workspace = true, features = ["fancy-no-backtrace", "fancy"] }
|
2023-08-23 20:23:27 +00:00
|
|
|
mimalloc = { version = "0.1.37", default-features = false, optional = true }
|
2024-03-07 22:40:31 +00:00
|
|
|
serde_json = { workspace = true }
|
2023-05-26 15:32:48 +00:00
|
|
|
simplelog = "0.12"
|
|
|
|
time = "0.3"
|
2022-02-22 15:55:28 +00:00
|
|
|
|
2022-05-26 18:28:59 +00:00
|
|
|
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
|
|
|
# Our dependencies don't use OpenSSL on Windows
|
2023-05-26 15:32:48 +00:00
|
|
|
openssl = { version = "0.10", features = ["vendored"], optional = true }
|
2022-05-26 18:28:59 +00:00
|
|
|
|
2022-10-16 21:51:15 +00:00
|
|
|
[target.'cfg(windows)'.build-dependencies]
|
2023-04-26 12:14:55 +00:00
|
|
|
winresource = "0.1"
|
2022-10-16 21:51:15 +00:00
|
|
|
|
|
|
|
[target.'cfg(target_family = "unix")'.dependencies]
|
2024-03-07 22:40:31 +00:00
|
|
|
nix = { workspace = true, default-features = false, features = [
|
|
|
|
"signal",
|
|
|
|
"process",
|
|
|
|
"fs",
|
|
|
|
"term",
|
`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 12:32:20 +00:00
|
|
|
] }
|
2022-10-16 21:51:15 +00:00
|
|
|
|
2021-07-30 20:02:16 +00:00
|
|
|
[dev-dependencies]
|
2024-03-06 22:08:14 +00:00
|
|
|
nu-test-support = { path = "./crates/nu-test-support", version = "0.91.1" }
|
2023-05-26 15:32:48 +00:00
|
|
|
assert_cmd = "2.0"
|
2024-03-23 23:46:02 +00:00
|
|
|
dirs-next = { workspace = true }
|
2024-03-01 18:09:21 +00:00
|
|
|
divan = "0.1.14"
|
2023-07-24 05:41:03 +00:00
|
|
|
pretty_assertions = "1.4"
|
2024-03-07 22:40:31 +00:00
|
|
|
rstest = { workspace = true, default-features = false }
|
2024-02-19 01:36:41 +00:00
|
|
|
serial_test = "3.0"
|
2024-03-07 22:40:31 +00:00
|
|
|
tempfile = { workspace = true }
|
2021-12-07 20:06:34 +00:00
|
|
|
|
|
|
|
[features]
|
2023-01-23 18:57:40 +00:00
|
|
|
plugin = [
|
2024-03-07 22:40:31 +00:00
|
|
|
"nu-plugin",
|
|
|
|
"nu-cli/plugin",
|
|
|
|
"nu-parser/plugin",
|
|
|
|
"nu-command/plugin",
|
|
|
|
"nu-protocol/plugin",
|
|
|
|
"nu-engine/plugin",
|
2023-01-23 18:57:40 +00:00
|
|
|
]
|
2024-01-20 14:04:06 +00:00
|
|
|
default = ["default-no-clipboard", "system-clipboard"]
|
|
|
|
# Enables convenient omitting of the system-clipboard feature, as it leads to problems in ci on linux
|
|
|
|
# See https://github.com/nushell/nushell/pull/11535
|
|
|
|
default-no-clipboard = [
|
2024-03-07 22:40:31 +00:00
|
|
|
"plugin",
|
|
|
|
"which-support",
|
|
|
|
"trash-support",
|
|
|
|
"sqlite",
|
|
|
|
"mimalloc",
|
2024-01-20 14:04:06 +00:00
|
|
|
]
|
2021-12-07 20:06:34 +00:00
|
|
|
stable = ["default"]
|
2023-05-22 15:42:38 +00:00
|
|
|
wasi = ["nu-cmd-lang/wasi"]
|
2023-06-14 21:12:55 +00:00
|
|
|
# NOTE: individual features are also passed to `nu-cmd-lang` that uses them to generate the feature matrix in the `version` command
|
2022-11-21 17:24:25 +00:00
|
|
|
|
2023-10-10 23:13:28 +00:00
|
|
|
# Enable to statically link OpenSSL (perl is required, to build OpenSSL https://docs.rs/openssl/latest/openssl/);
|
2023-09-09 20:34:07 +00:00
|
|
|
# otherwise the system version will be used. Not enabled by default because it takes a while to build
|
2023-05-22 15:42:38 +00:00
|
|
|
static-link-openssl = ["dep:openssl", "nu-cmd-lang/static-link-openssl"]
|
2021-12-07 20:06:34 +00:00
|
|
|
|
2023-06-14 22:27:12 +00:00
|
|
|
mimalloc = ["nu-cmd-lang/mimalloc", "dep:mimalloc"]
|
2024-03-15 13:59:21 +00:00
|
|
|
system-clipboard = ["reedline/system_clipboard", "nu-cli/system-clipboard"]
|
2023-06-14 22:27:12 +00:00
|
|
|
|
2021-12-07 20:06:34 +00:00
|
|
|
# Stable (Default)
|
2023-05-22 15:42:38 +00:00
|
|
|
which-support = ["nu-command/which-support", "nu-cmd-lang/which-support"]
|
|
|
|
trash-support = ["nu-command/trash-support", "nu-cmd-lang/trash-support"]
|
2022-01-20 18:02:53 +00:00
|
|
|
|
2021-12-07 20:06:34 +00:00
|
|
|
# Dataframe feature for nushell
|
2023-06-14 21:12:55 +00:00
|
|
|
dataframe = ["dep:nu-cmd-dataframe", "nu-cmd-lang/dataframe"]
|
2021-12-07 20:06:34 +00:00
|
|
|
|
2022-11-23 00:58:11 +00:00
|
|
|
# SQLite commands for nushell
|
2023-05-22 15:42:38 +00:00
|
|
|
sqlite = ["nu-command/sqlite", "nu-cmd-lang/sqlite"]
|
2022-04-24 09:29:21 +00:00
|
|
|
|
2021-12-07 20:06:34 +00:00
|
|
|
[profile.release]
|
2023-01-23 18:57:40 +00:00
|
|
|
opt-level = "s" # Optimize for size
|
2022-02-28 12:13:24 +00:00
|
|
|
strip = "debuginfo"
|
2022-03-10 13:37:24 +00:00
|
|
|
lto = "thin"
|
2022-02-28 12:13:24 +00:00
|
|
|
|
2022-03-16 22:21:06 +00:00
|
|
|
# build with `cargo build --profile profiling`
|
2022-02-28 12:13:24 +00:00
|
|
|
# to analyze performance with tooling like linux perf
|
|
|
|
[profile.profiling]
|
|
|
|
inherits = "release"
|
|
|
|
strip = false
|
|
|
|
debug = true
|
2021-12-07 20:06:34 +00:00
|
|
|
|
2022-05-16 04:02:11 +00:00
|
|
|
# build with `cargo build --profile ci`
|
|
|
|
# to analyze performance with tooling like linux perf
|
|
|
|
[profile.ci]
|
|
|
|
inherits = "dev"
|
|
|
|
strip = false
|
|
|
|
debug = false
|
|
|
|
|
2019-12-10 00:05:40 +00:00
|
|
|
# Main nu binary
|
2019-06-27 04:56:48 +00:00
|
|
|
[[bin]]
|
|
|
|
name = "nu"
|
|
|
|
path = "src/main.rs"
|
2023-02-12 22:22:00 +00:00
|
|
|
bench = false
|
2022-09-29 18:37:48 +00:00
|
|
|
|
2022-10-17 21:45:28 +00:00
|
|
|
# To use a development version of a dependency please use a global override here
|
|
|
|
# changing versions in each sub-crate of the workspace is tedious
|
2024-02-12 14:30:41 +00:00
|
|
|
[patch.crates-io]
|
2024-03-10 19:31:54 +00:00
|
|
|
reedline = { git = "https://github.com/nushell/reedline", branch = "main" }
|
2023-03-13 22:38:18 +00:00
|
|
|
# nu-ansi-term = {git = "https://github.com/nushell/nu-ansi-term.git", branch = "main"}
|
2023-01-05 19:39:54 +00:00
|
|
|
|
|
|
|
# Run all benchmarks with `cargo bench`
|
|
|
|
# Run individual benchmarks like `cargo bench -- <regex>` e.g. `cargo bench -- parse`
|
|
|
|
[[bench]]
|
2023-01-11 01:51:25 +00:00
|
|
|
name = "benchmarks"
|
2023-01-23 18:57:40 +00:00
|
|
|
harness = false
|