mirror of
https://github.com/nushell/nushell.git
synced 2025-03-13 15:08:43 +01:00
# Description This PR supersedes https://github.com/nushell/nushell/pull/14813 by making it a built-in command instead of checking for the latest version at some interval when nushell starts. This is what it looks like.  This example shows the output when the running version was 0.101.1-nightly.10  Description from old PR. One key functionality that I thought was interesting with this and that I worked with @hustcer on was to try and make sure it works with nightlies. So, it should tell you when there's a new nightly version that is available to download. This way, you can know about it without checking. What's key from a nightly perspective is (1) the tags are now semver compliant and (2) hustcer now updates the Cargo.toml package.version version number prior to compilation so you can know you're running a nightly version, and this PR uses that information to know whether to check the nightly repo or the nushell repo for updates. This uses the [update-informer](https://docs.rs/update-informer/latest/update_informer/) crate. NOTE that this _informs_ you of updates but does not automatically update. I kind of see this as the first step to eventually having an auto updater. There was caching of the version in the old PR since it ran on every nushell startup. Since this PR makes it a command and therefore always runs on-demand, I've removed the caching so that it always checks when you run it. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` 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. -->
335 lines
9.4 KiB
TOML
335 lines
9.4 KiB
TOML
[package]
|
|
authors = ["The Nushell Project Developers"]
|
|
build = "scripts/build.rs"
|
|
default-run = "nu"
|
|
description = "A new type of shell"
|
|
documentation = "https://www.nushell.sh/book/"
|
|
edition = "2021"
|
|
exclude = ["images"]
|
|
homepage = "https://www.nushell.sh"
|
|
license = "MIT"
|
|
name = "nu"
|
|
repository = "https://github.com/nushell/nushell"
|
|
rust-version = "1.82.0"
|
|
version = "0.101.1"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[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"
|
|
|
|
[workspace]
|
|
members = [
|
|
"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-plugin",
|
|
"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-derive-value",
|
|
"crates/nu-plugin",
|
|
"crates/nu-plugin-core",
|
|
"crates/nu-plugin-engine",
|
|
"crates/nu-plugin-protocol",
|
|
"crates/nu-plugin-test-support",
|
|
"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_plugin_polars",
|
|
"crates/nu_plugin_stress_internals",
|
|
"crates/nu-std",
|
|
"crates/nu-table",
|
|
"crates/nu-term-grid",
|
|
"crates/nu-test-support",
|
|
"crates/nu-utils",
|
|
"crates/nuon",
|
|
]
|
|
|
|
[workspace.dependencies]
|
|
alphanumeric-sort = "1.5"
|
|
ansi-str = "0.8"
|
|
anyhow = "1.0.82"
|
|
base64 = "0.22.1"
|
|
bracoxide = "0.1.4"
|
|
brotli = "6.0"
|
|
byteorder = "1.5"
|
|
bytes = "1"
|
|
bytesize = "1.3"
|
|
calamine = "0.26.1"
|
|
chardetng = "0.1.17"
|
|
chrono = { default-features = false, version = "0.4.34" }
|
|
chrono-humanize = "0.2.3"
|
|
chrono-tz = "0.10"
|
|
crossbeam-channel = "0.5.8"
|
|
crossterm = "0.28.1"
|
|
csv = "1.3"
|
|
ctrlc = "3.4"
|
|
devicons = "0.6.12"
|
|
dialoguer = { default-features = false, version = "0.11" }
|
|
digest = { default-features = false, version = "0.10" }
|
|
dirs = "5.0"
|
|
dirs-sys = "0.4"
|
|
dtparse = "2.0"
|
|
encoding_rs = "0.8"
|
|
fancy-regex = "0.14"
|
|
filesize = "0.2"
|
|
filetime = "0.2"
|
|
heck = "0.5.0"
|
|
human-date-parser = "0.2.0"
|
|
indexmap = "2.7"
|
|
indicatif = "0.17"
|
|
interprocess = "2.2.0"
|
|
is_executable = "1.0"
|
|
itertools = "0.13"
|
|
libc = "0.2"
|
|
libproc = "0.14"
|
|
log = "0.4"
|
|
lru = "0.12"
|
|
lscolors = { version = "0.17", default-features = false }
|
|
lsp-server = "0.7.8"
|
|
lsp-types = { version = "0.97.0", features = ["proposed"] }
|
|
lsp-textdocument = "0.4.0"
|
|
mach2 = "0.4"
|
|
md5 = { version = "0.10", package = "md-5" }
|
|
miette = "7.3"
|
|
mime = "0.3.17"
|
|
mime_guess = "2.0"
|
|
mockito = { version = "1.6", default-features = false }
|
|
multipart-rs = "0.1.13"
|
|
native-tls = "0.2"
|
|
nix = { version = "0.29", default-features = false }
|
|
notify-debouncer-full = { version = "0.3", default-features = false }
|
|
nu-ansi-term = "0.50.1"
|
|
nucleo-matcher = "0.3"
|
|
num-format = "0.4"
|
|
num-traits = "0.2"
|
|
oem_cp = "2.0.0"
|
|
omnipath = "0.1"
|
|
open = "5.3"
|
|
os_pipe = { version = "1.2", features = ["io_safety"] }
|
|
pathdiff = "0.2"
|
|
percent-encoding = "2"
|
|
pretty_assertions = "1.4"
|
|
print-positions = "0.6"
|
|
proc-macro-error = { version = "1.0", default-features = false }
|
|
proc-macro2 = "1.0"
|
|
procfs = "0.17.0"
|
|
pwd = "1.3"
|
|
quick-xml = "0.37.0"
|
|
quickcheck = "1.0"
|
|
quickcheck_macros = "1.0"
|
|
quote = "1.0"
|
|
rand = "0.8"
|
|
getrandom = "0.2" # pick same version that rand requires
|
|
rand_chacha = "0.3.1"
|
|
ratatui = "0.26"
|
|
rayon = "1.10"
|
|
reedline = "0.38.0"
|
|
rmp = "0.8"
|
|
rmp-serde = "1.3"
|
|
roxmltree = "0.20"
|
|
rstest = { version = "0.23", default-features = false }
|
|
rstest_reuse = "0.7"
|
|
rusqlite = "0.31"
|
|
rust-embed = "8.5.0"
|
|
scopeguard = { version = "1.2.0" }
|
|
serde = { version = "1.0" }
|
|
serde_json = "1.0"
|
|
serde_urlencoded = "0.7.1"
|
|
serde_yml = "0.0.12"
|
|
sha2 = "0.10"
|
|
strip-ansi-escapes = "0.2.0"
|
|
syn = "2.0"
|
|
sysinfo = "0.32"
|
|
tabled = { version = "0.17.0", default-features = false }
|
|
tempfile = "3.15"
|
|
titlecase = "3.0"
|
|
toml = "0.8"
|
|
trash = "5.2"
|
|
update-informer = { version = "1.2.0", default-features = false, features = ["github", "native-tls", "ureq"] }
|
|
umask = "2.1"
|
|
unicode-segmentation = "1.12"
|
|
unicode-width = "0.2"
|
|
ureq = { version = "2.12", default-features = false }
|
|
url = "2.2"
|
|
uu_cp = "0.0.29"
|
|
uu_mkdir = "0.0.29"
|
|
uu_mktemp = "0.0.29"
|
|
uu_mv = "0.0.29"
|
|
uu_touch = "0.0.29"
|
|
uu_whoami = "0.0.29"
|
|
uu_uname = "0.0.29"
|
|
uucore = "0.0.29"
|
|
uuid = "1.12.0"
|
|
v_htmlescape = "0.15.0"
|
|
wax = "0.6"
|
|
web-time = "1.1.0"
|
|
which = "7.0.0"
|
|
windows = "0.56"
|
|
windows-sys = "0.48"
|
|
winreg = "0.52"
|
|
memchr = "2.7.4"
|
|
|
|
[workspace.lints.clippy]
|
|
# Warning: workspace lints affect library code as well as tests, so don't enable lints that would be too noisy in tests like that.
|
|
# todo = "warn"
|
|
unchecked_duration_subtraction = "warn"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
nu-cli = { path = "./crates/nu-cli", version = "0.101.1" }
|
|
nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.101.1" }
|
|
nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.101.1" }
|
|
nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.101.1", optional = true }
|
|
nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.101.1" }
|
|
nu-command = { path = "./crates/nu-command", version = "0.101.1" }
|
|
nu-engine = { path = "./crates/nu-engine", version = "0.101.1" }
|
|
nu-explore = { path = "./crates/nu-explore", version = "0.101.1" }
|
|
nu-lsp = { path = "./crates/nu-lsp/", version = "0.101.1" }
|
|
nu-parser = { path = "./crates/nu-parser", version = "0.101.1" }
|
|
nu-path = { path = "./crates/nu-path", version = "0.101.1" }
|
|
nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.101.1" }
|
|
nu-protocol = { path = "./crates/nu-protocol", version = "0.101.1" }
|
|
nu-std = { path = "./crates/nu-std", version = "0.101.1" }
|
|
nu-system = { path = "./crates/nu-system", version = "0.101.1" }
|
|
nu-utils = { path = "./crates/nu-utils", version = "0.101.1" }
|
|
reedline = { workspace = true, features = ["bashisms", "sqlite"] }
|
|
|
|
crossterm = { workspace = true }
|
|
ctrlc = { workspace = true }
|
|
dirs = { workspace = true }
|
|
log = { workspace = true }
|
|
miette = { workspace = true, features = ["fancy-no-backtrace", "fancy"] }
|
|
mimalloc = { version = "0.1.42", default-features = false, optional = true }
|
|
multipart-rs = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
simplelog = "0.12"
|
|
time = "0.3"
|
|
|
|
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
|
# Our dependencies don't use OpenSSL on Windows
|
|
openssl = { version = "0.10", features = ["vendored"], optional = true }
|
|
|
|
[target.'cfg(windows)'.build-dependencies]
|
|
winresource = "0.1"
|
|
|
|
[target.'cfg(target_family = "unix")'.dependencies]
|
|
nix = { workspace = true, default-features = false, features = [
|
|
"signal",
|
|
"process",
|
|
"fs",
|
|
"term",
|
|
] }
|
|
|
|
[dev-dependencies]
|
|
nu-test-support = { path = "./crates/nu-test-support", version = "0.101.1" }
|
|
nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.101.1" }
|
|
nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.101.1" }
|
|
assert_cmd = "2.0"
|
|
dirs = { workspace = true }
|
|
tango-bench = "0.6"
|
|
pretty_assertions = { workspace = true }
|
|
fancy-regex = { workspace = true }
|
|
rstest = { workspace = true, default-features = false }
|
|
serial_test = "3.2"
|
|
tempfile = { workspace = true }
|
|
|
|
[features]
|
|
plugin = [
|
|
# crates
|
|
"nu-cmd-plugin",
|
|
"nu-plugin-engine",
|
|
|
|
# features
|
|
"nu-cli/plugin",
|
|
"nu-cmd-lang/plugin",
|
|
"nu-command/plugin",
|
|
"nu-engine/plugin",
|
|
"nu-engine/plugin",
|
|
"nu-parser/plugin",
|
|
"nu-protocol/plugin",
|
|
]
|
|
|
|
default = [
|
|
"plugin",
|
|
"trash-support",
|
|
"sqlite",
|
|
"mimalloc",
|
|
]
|
|
stable = ["default"]
|
|
# NOTE: individual features are also passed to `nu-cmd-lang` that uses them to generate the feature matrix in the `version` command
|
|
|
|
# Enable to statically link OpenSSL (perl is required, to build OpenSSL https://docs.rs/openssl/latest/openssl/);
|
|
# otherwise the system version will be used. Not enabled by default because it takes a while to build
|
|
static-link-openssl = ["dep:openssl", "nu-cmd-lang/static-link-openssl"]
|
|
|
|
mimalloc = ["nu-cmd-lang/mimalloc", "dep:mimalloc"]
|
|
# Optional system clipboard support in `reedline`, this behavior has problematic compatibility with some systems.
|
|
# Missing X server/ Wayland can cause issues
|
|
system-clipboard = [
|
|
"reedline/system_clipboard",
|
|
"nu-cli/system-clipboard",
|
|
"nu-cmd-lang/system-clipboard",
|
|
]
|
|
|
|
# Stable (Default)
|
|
trash-support = ["nu-command/trash-support", "nu-cmd-lang/trash-support"]
|
|
|
|
# SQLite commands for nushell
|
|
sqlite = ["nu-command/sqlite", "nu-cmd-lang/sqlite"]
|
|
|
|
[profile.release]
|
|
opt-level = "s" # Optimize for size
|
|
strip = "debuginfo"
|
|
lto = "thin"
|
|
|
|
# build with `cargo build --profile profiling`
|
|
# to analyze performance with tooling like linux perf
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
strip = false
|
|
debug = true
|
|
|
|
# build with `cargo build --profile ci`
|
|
# to analyze performance with tooling like linux perf
|
|
[profile.ci]
|
|
inherits = "dev"
|
|
strip = false
|
|
debug = false
|
|
|
|
# Main nu binary
|
|
[[bin]]
|
|
name = "nu"
|
|
path = "src/main.rs"
|
|
bench = false
|
|
|
|
# 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
|
|
[patch.crates-io]
|
|
# reedline = { git = "https://github.com/nushell/reedline", branch = "main" }
|
|
# nu-ansi-term = {git = "https://github.com/nushell/nu-ansi-term.git", branch = "main"}
|
|
|
|
# Run all benchmarks with `cargo bench`
|
|
# Run individual benchmarks like `cargo bench -- <regex>` e.g. `cargo bench -- parse`
|
|
[[bench]]
|
|
name = "benchmarks"
|
|
harness = false
|