nushell/crates/nu-command/Cargo.toml

143 lines
4.3 KiB
TOML
Raw Normal View History

[package]
authors = ["The Nushell Project Developers"]
description = "Nushell's built-in commands"
edition = "2021"
license = "MIT"
name = "nu-command"
add a new inspect command for more debugging (#8028) # Description The purpose of this command is to help to debug pipelines. It works by allowing you to inject the `inspect` command into a pipeline at any point. Then it shows you what the input description is and what the input values are that are passed into `inspect`. With each step it prints this information out while also passing the value information on to the next step in the pipeline. ![image](https://user-images.githubusercontent.com/343840/218154064-e107859b-d0da-41c6-8e34-2d717639b81c.png) This command is kind of a "hack job" because it clones maybe too much and I had to get creative in order to output two different tables. I'm sure there are many ways this can be improved or combined into other commands but I wanted to start here. Note that the `inspect` output is written to stderr and the normal nushell output is written to stdout. If we were to output both to stdout, nushell would get confused. # User-Facing 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 -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # 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.
2023-02-11 19:59:11 +01:00
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-command"
version = "0.90.2"
2021-09-02 03:29:43 +02:00
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
bench = false
2021-09-02 03:29:43 +02:00
[dependencies]
nu-ansi-term = "0.50.0"
nu-cmd-base = { path = "../nu-cmd-base", version = "0.90.2" }
nu-color-config = { path = "../nu-color-config", version = "0.90.2" }
nu-engine = { path = "../nu-engine", version = "0.90.2" }
nu-glob = { path = "../nu-glob", version = "0.90.2" }
nu-json = { path = "../nu-json", version = "0.90.2" }
nu-parser = { path = "../nu-parser", version = "0.90.2" }
nu-path = { path = "../nu-path", version = "0.90.2" }
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.90.2" }
nu-protocol = { path = "../nu-protocol", version = "0.90.2" }
nu-system = { path = "../nu-system", version = "0.90.2" }
nu-table = { path = "../nu-table", version = "0.90.2" }
nu-term-grid = { path = "../nu-term-grid", version = "0.90.2" }
nu-utils = { path = "../nu-utils", version = "0.90.2" }
2023-03-14 19:46:42 +01:00
alphanumeric-sort = "1.5"
base64 = "0.21"
byteorder = "1.5"
bytesize = "1.3"
calamine = "0.23.1"
chrono = { version = "0.4", features = ["std", "unstable-locales"], default-features = false }
Don't use `oldtime` feature of chrono (#9577) <!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> # Description `chrono` crate enables `oldtime` feature by default, which has a vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071). This PR tries to remove `time` v0.1.45 completely from nu and add an audit CI to check for security vulnerabilities. :hand: Wait for the following PRs: - [x] https://github.com/nushell/reedline/pull/599 - [x] https://github.com/bspeice/dtparse/pull/44 - [x] https://github.com/Byron/trash-rs/pull/75 - [x] https://gitlab.com/imp/chrono-humanize-rs/-/merge_requests/15 # 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 -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.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. --> --------- Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
2023-08-25 10:54:01 +02:00
chrono-humanize = "0.2.3"
chrono-tz = "0.8"
crossterm = "0.27"
2023-10-18 23:01:14 +02:00
csv = "1.3"
dialoguer = { default-features = false, features = ["fuzzy-select"], version = "0.11" }
digest = { default-features = false, version = "0.10" }
Don't use `oldtime` feature of chrono (#9577) <!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> # Description `chrono` crate enables `oldtime` feature by default, which has a vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071). This PR tries to remove `time` v0.1.45 completely from nu and add an audit CI to check for security vulnerabilities. :hand: Wait for the following PRs: - [x] https://github.com/nushell/reedline/pull/599 - [x] https://github.com/bspeice/dtparse/pull/44 - [x] https://github.com/Byron/trash-rs/pull/75 - [x] https://gitlab.com/imp/chrono-humanize-rs/-/merge_requests/15 # 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 -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.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. --> --------- Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
2023-08-25 10:54:01 +02:00
dtparse = "2.0"
encoding_rs = "0.8"
fancy-regex = "0.12"
filesize = "0.2"
filetime = "0.2"
fs_extra = "1.3"
allow parsing of human readable datetimes (#11051) # Description This PR adds the ability to parse human readable datetime strings as part of the `into datetime` command. I added a new `-n`/`--list-human` parameter that produces this list to give the user an idea of what is supported. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬───result───╮ │0 │Today 18:30 │in 8 hours │ │1 │2022-11-07 13:25:30 │a year ago │ │2 │15:20 Friday │in 3 days │ │3 │This Friday 17:00 │in 3 days │ │4 │13:25, Next Tuesday │in a week │ │5 │Last Friday at 19:45 │3 days ago │ │6 │In 3 days │in 2 days │ │7 │In 2 hours │in 2 hours │ │8 │10 hours and 5 minutes ago │10 hours ago│ │9 │1 years ago │a year ago │ │10│A year ago │a year ago │ │11│A month ago │a month ago │ │12│A week ago │a week ago │ │13│A day ago │a day ago │ │14│An hour ago │an hour ago │ │15│A minute ago │a minute ago│ │16│A second ago │now │ │17│Now │now │ ╰#─┴parseable human datetime examples┴───result───╯ ``` Or with `$env.config.datetime_format.table` set. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬──────result───────╮ │0 │Today 18:30 │11/14/23 06:30:00PM│ │1 │2022-11-07 13:25:30 │11/07/22 01:25:30PM│ │2 │15:20 Friday │11/17/23 03:20:00PM│ │3 │This Friday 17:00 │11/17/23 05:00:00PM│ │4 │13:25, Next Tuesday │11/21/23 01:25:00PM│ │5 │Last Friday at 19:45 │11/10/23 07:45:00PM│ │6 │In 3 days │11/17/23 10:12:54AM│ │7 │In 2 hours │11/14/23 12:12:54PM│ │8 │10 hours and 5 minutes ago │11/14/23 12:07:54AM│ │9 │1 years ago │11/13/22 10:12:54AM│ │10│A year ago │11/13/22 10:12:54AM│ │11│A month ago │10/15/23 11:12:54AM│ │12│A week ago │11/07/23 10:12:54AM│ │13│A day ago │11/13/23 10:12:54AM│ │14│An hour ago │11/14/23 09:12:54AM│ │15│A minute ago │11/14/23 10:11:54AM│ │16│A second ago │11/14/23 10:12:53AM│ │17│Now │11/14/23 10:12:54AM│ ╰#─┴parseable human datetime examples┴──────result───────╯ ``` # 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 std testing; testing run-tests --path crates/nu-std"` 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. -->
2023-11-16 00:43:37 +01:00
human-date-parser = "0.1.1"
indexmap = "2.2"
indicatif = "0.17"
Bump itertools from 0.11.0 to 0.12.0 (#11360) Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.11.0 to 0.12.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's changelog</a>.</em></p> <blockquote> <h2>0.12.0</h2> <h3>Breaking</h3> <ul> <li>Made <code>take_while_inclusive</code> consume iterator by value (<a href="https://redirect.github.com/rust-itertools/itertools/issues/709">#709</a>)</li> <li>Added <code>Clone</code> bound to <code>Unique</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/777">#777</a>)</li> </ul> <h3>Added</h3> <ul> <li>Added <code>Itertools::try_len</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/723">#723</a>)</li> <li>Added free function <code>sort_unstable</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/796">#796</a>)</li> <li>Added <code>GroupMap::fold_with</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/778">#778</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/785">#785</a>)</li> <li>Added <code>PeekNth::{peek_mut, peek_nth_mut}</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/716">#716</a>)</li> <li>Added <code>PeekNth::{next_if, next_if_eq}</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/734">#734</a>)</li> <li>Added conversion into <code>(Option&lt;A&gt;,Option&lt;B&gt;)</code> to <code>EitherOrBoth</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/713">#713</a>)</li> <li>Added conversion from <code>Either&lt;A, B&gt;</code> to <code>EitherOrBoth&lt;A, B&gt;</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/715">#715</a>)</li> <li>Implemented <code>ExactSizeIterator</code> for <code>Tuples</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/761">#761</a>)</li> <li>Implemented <code>ExactSizeIterator</code> for <code>(Circular)TupleWindows</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/752">#752</a>)</li> <li>Made <code>EitherOrBoth&lt;T&gt;</code> a shorthand for <code>EitherOrBoth&lt;T, T&gt;</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/719">#719</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Added missing <code>#[must_use]</code> annotations on iterator adaptors (<a href="https://redirect.github.com/rust-itertools/itertools/issues/794">#794</a>)</li> <li>Made <code>Combinations</code> lazy (<a href="https://redirect.github.com/rust-itertools/itertools/issues/795">#795</a>)</li> <li>Made <code>Intersperse(With)</code> lazy (<a href="https://redirect.github.com/rust-itertools/itertools/issues/797">#797</a>)</li> <li>Made <code>Permutations</code> lazy (<a href="https://redirect.github.com/rust-itertools/itertools/issues/793">#793</a>)</li> <li>Made <code>Product</code> lazy (<a href="https://redirect.github.com/rust-itertools/itertools/issues/800">#800</a>)</li> <li>Made <code>TupleWindows</code> lazy (<a href="https://redirect.github.com/rust-itertools/itertools/issues/602">#602</a>)</li> <li>Specialized <code>Combinations::{count, size_hint}</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/729">#729</a>)</li> <li>Specialized <code>CombinationsWithReplacement::{count, size_hint}</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/737">#737</a>)</li> <li>Specialized <code>Powerset::fold</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/765">#765</a>)</li> <li>Specialized <code>Powerset::count</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/735">#735</a>)</li> <li>Specialized <code>TupleCombinations::{count, size_hint}</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/763">#763</a>)</li> <li>Specialized <code>TupleCombinations::fold</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/775">#775</a>)</li> <li>Specialized <code>WhileSome::fold</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/780">#780</a>)</li> <li>Specialized <code>WithPosition::fold</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/772">#772</a>)</li> <li>Specialized <code>ZipLongest::fold</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/774">#774</a>)</li> <li>Changed <code>{min, max}_set*</code> operations require <code>alloc</code> feature, instead of <code>std</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/760">#760</a>)</li> <li>Improved documentation of <code>tree_fold1</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/787">#787</a>)</li> <li>Improved documentation of <code>permutations</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/724">#724</a>)</li> <li>Fixed typo in documentation of <code>multiunzip</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/770">#770</a>)</li> </ul> <h3>Notable Internal Changes</h3> <ul> <li>Improved specialization tests (<a href="https://redirect.github.com/rust-itertools/itertools/issues/799">#799</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/786">#786</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/782">#782</a>)</li> <li>Simplified implementation of <code>Permutations</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/739">#739</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/748">#748</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/790">#790</a>)</li> <li>Combined <code>Merge</code>/<code>MergeBy</code>/<code>MergeJoinBy</code> implementations (<a href="https://redirect.github.com/rust-itertools/itertools/issues/736">#736</a>)</li> <li>Simplified <code>Permutations::size_hint</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/739">#739</a>)</li> <li>Fix wrapping arithmetic in benchmarks (<a href="https://redirect.github.com/rust-itertools/itertools/issues/770">#770</a>)</li> <li>Enforced <code>rustfmt</code> in CI (<a href="https://redirect.github.com/rust-itertools/itertools/issues/751">#751</a>)</li> <li>Disallowed compile warnings in CI (<a href="https://redirect.github.com/rust-itertools/itertools/issues/720">#720</a>)</li> <li>Used <code>cargo hack</code> to check MSRV (<a href="https://redirect.github.com/rust-itertools/itertools/issues/754">#754</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-itertools/itertools/commit/98ecabb47d7147dae06fc3fa400ec758947194f3"><code>98ecabb</code></a> chore: Release itertools version 0.12.0</li> <li><a href="https://github.com/rust-itertools/itertools/commit/22fc427ac5282cbdafccfe38a686ec1d3b720120"><code>22fc427</code></a> prepare v0.12.0 release</li> <li><a href="https://github.com/rust-itertools/itertools/commit/6d291786a9c9686a3997d93c513bd18326611fe5"><code>6d29178</code></a> Document the field <code>a_cur</code> of <code>Product</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/bf2b0129d1d3cc1ffa733059f3088adb6d745fe6"><code>bf2b012</code></a> Better <code>Product::size_hint</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/8d07f6b8566a515118ca8b119f358b73d483152b"><code>8d07f6b</code></a> Make <code>Product</code> lazy</li> <li><a href="https://github.com/rust-itertools/itertools/commit/d7e6bab9fd0ad79130692f8e48e21375362a7614"><code>d7e6bab</code></a> Document the field <code>peek</code> of <code>IntersperseWith</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/9b01a118919f0d1f7c3327d1a15a5eb660f3912e"><code>9b01a11</code></a> Make <code>IntersperseWith</code> lazy</li> <li><a href="https://github.com/rust-itertools/itertools/commit/4f22173b93a2eb58da16b7da6d08e6c3f1c56544"><code>4f22173</code></a> Refactor <code>IntersperseWith::next</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/b76172b412116356ebef05b884a6e4def63a4d17"><code>b76172b</code></a> chore: adjust docs to reflect discussion in the PR</li> <li><a href="https://github.com/rust-itertools/itertools/commit/955927f6c424f895ad7519d413bc5718e6ad26bf"><code>955927f</code></a> chore: fixup docs of tree_fold1</li> <li>Additional commits viewable in <a href="https://github.com/rust-itertools/itertools/compare/v0.11.0...v0.12.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=itertools&package-manager=cargo&previous-version=0.11.0&new-version=0.12.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 show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@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-12-20 15:58:07 +01:00
itertools = "0.12"
log = "0.4"
lscolors = { version = "0.17", default-features = false, features = ["nu-ansi-term"] }
md5 = { package = "md-5", version = "0.10" }
Bump miette from 5.10.0 to 7.0.0 (#11788) <!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> # Description Bump miette from 5.10.0 to 7.0.0 # 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 std testing; testing run-tests --path crates/nu-std"` 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. --> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com>
2024-02-08 02:26:18 +01:00
miette = { version = "7.0", features = ["fancy-no-backtrace"] }
mime = "0.3"
mime_guess = "2.0"
native-tls = "0.2"
notify-debouncer-full = { version = "0.3", default-features = false }
num = { version = "0.4", optional = true }
num-format = { version = "0.4" }
num-traits = "0.2"
once_cell = "1.18"
2023-06-29 15:30:07 +02:00
open = "5.0"
os_pipe = "1.1"
pathdiff = "0.2"
percent-encoding = "2.3"
print-positions = "0.6"
quick-xml = "0.31.0"
rand = "0.8"
rayon = "1.8"
regex = "1.9.5"
roxmltree = "0.18"
Fix memory consumption of into sqlite (#10232) # Description Currently, the `into sqlite` command collects the entire input stream into a single Value, which soaks up the entire input into memory, before it ever tries to write anything to the DB. This is very problematic for large inputs; for example, I tried transforming a multi-gigabyte CSV file into SQLite, and before I knew what was happening, my system's memory was completely exhausted, and I had to hard reboot to recover. This PR fixes this problem by working directly with the pipeline stream, inserting into the DB as values are read from the stream. In order to facilitate working with the stream directly, I introduced a new `Table` struct to store the connection and a few configuration parameters, as well as to make it easier to lazily create the table on the first read value. In addition to the purely functional fixes, a few other changes were made to the serialization and user facing behavior. ### Serialization Much of the preexisting code was focused on generating the exact text needed for a SQL statement. This is unneeded and less safe than using the `rusqlite` crate's serialization for native Rust types along with prepared statements. ### User-Facing Changes Currently, the command is very liberal in the input types it accepts. The strategy is basically if it is a record, try to follow its structure and make an analogous SQL row, which is pretty reasonable. However, when it's not a record, it basically tries to guess what the user wanted and just makes a single column table and serializes the value into that one column, whatever type it may be. This has been changed so that it only accepts records as input. If the user wants to serialize non-record types into SQL, then they must explicitly opt into doing this by constructing a record or table with it first. For a utility for inserting data into SQL, I think it makes more sense to let the user choose how to convert their data, rather than make a choice for them that may surprise them. However, I understand this may be a controversial change. If the maintainers don't agree, I can change this back. #### Long switch names The `file_name` and `table_name` long form switches are currently snake_case and expect to be as such at the command line. These have been changed to kebab-case to be more conventional. # Tests + Formatting To test the memory consumption, I used [this publicly available index of all Wikipedia articles](https://dumps.wikimedia.org/enwiki/20230820/), using the first 10,000, 100,000, and 1,000,000 entries, in that order. I ran the following script to benchmark the changes against the current stable release: ```nu #!/usr/bin/nu # let shellbin = $"($env.HOME)/src/nushell/target/aarch64-linux-android/release/nu" let shellbin = "nu" const dbpath = 'enwiki-index.db' [10000, 100000, 1000000] | each {|rows| rm -f $dbpath; do { time -f '%M %e %U %S' $shellbin -c ( $"bzip2 -cdk ~/enwiki-20230820-pages-articles-multistream-index.txt.bz2 | head -n ($rows) | lines | parse '{offset}:{id}:{title}' | update cells -c [offset, id] { into int } | into sqlite ($dbpath)" ) } | complete | get stderr | str trim | parse '{rss_max} {real} {user} {kernel}' | update cells -c [rss_max] { $"($in)kb" | into filesize } | update cells -c [real, user, kernel] { $"($in)sec" | into duration } | insert rows $rows | roll right } | flatten | to nuon ``` This yields the following results Current stable release: |rows|rss_max|real|user|kernel| |-|-|-|-|-| |10000|53.6 MiB|770ms|460ms|420ms| |100000|209.6 MiB|6sec 940ms|3sec 740ms|4sec 380ms| |1000000|1.7 GiB|1min 8sec 810ms|38sec 690ms|42sec 550ms| This PR: |rows|rss_max|real|user|kernel| |-|-|-|-|-| |10000|38.2 MiB|780ms|440ms|410ms| |100000|39.8 MiB|6sec 450ms|3sec 530ms|4sec 160ms| |1000000|39.8 MiB|1min 3sec 230ms|37sec 440ms|40sec 180ms| # Note I started this branch kind of at the same time as my others, but I understand the feedback that smaller PRs are preferred. Let me know if it would be better to split this up. I do think the scope of the changes are on the bigger side even without the behavior changes I mentioned, so I'm not sure if that will help this particular PR very much, but I'm happy to oblige on request.
2024-01-16 04:41:25 +01:00
rusqlite = { version = "0.29", features = ["bundled", "backup", "chrono"], optional = true }
same-file = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
serde_urlencoded = "0.7"
serde_yaml = "0.9"
sha2 = "0.10"
sysinfo = "0.30"
tabled = { version = "0.14.0", features = ["color"], default-features = false }
Bump terminal_size from 0.2.6 to 0.3.0 (#10409) Bumps [terminal_size](https://github.com/eminence/terminal-size) from 0.2.6 to 0.3.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/eminence/terminal-size/releases">terminal_size's releases</a>.</em></p> <blockquote> <h2>v0.3.0</h2> <h2>What's Changed</h2> <ul> <li>Check all streams (out/err/in) to find one that has a tty and size by <a href="https://github.com/eminence"><code>@​eminence</code></a> in <a href="https://redirect.github.com/eminence/terminal-size/pull/58">eminence/terminal-size#58</a> <ul> <li>Note that this is a subtle change in behavior, since the <code>terminal_size()</code> function will now return success in cases more cases than before</li> </ul> </li> <li>Update to rustix 0.38 by <a href="https://github.com/chenx97"><code>@​chenx97</code></a> in <a href="https://redirect.github.com/eminence/terminal-size/pull/57">eminence/terminal-size#57</a> <ul> <li>This change bumps the MSRV from 1.48.0 to 1.63.0</li> </ul> </li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/eminence/terminal-size/compare/v0.2.6...v0.3.0">https://github.com/eminence/terminal-size/compare/v0.2.6...v0.3.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/eminence/terminal-size/commit/2983b7bf18531bbd2face938d2889f4590f9cb56"><code>2983b7b</code></a> Release v0.3.0</li> <li><a href="https://github.com/eminence/terminal-size/commit/27a4459b22594e804a608d0d29d194d2c6e454e3"><code>27a4459</code></a> Merge pull request <a href="https://redirect.github.com/eminence/terminal-size/issues/57">#57</a> from chenx97/rustix-0.38</li> <li><a href="https://github.com/eminence/terminal-size/commit/c24c1c34e51408c70136c9e6cff79d6d60f8aeed"><code>c24c1c3</code></a> Bump MSRV to 1.63.0</li> <li><a href="https://github.com/eminence/terminal-size/commit/78e13c77d7de86cf6d95dfaaf3ff71fec95d0cb4"><code>78e13c7</code></a> Update to rustix 0.38</li> <li><a href="https://github.com/eminence/terminal-size/commit/18c58b1ed5e4306826226d95e835ffd32f8c5926"><code>18c58b1</code></a> Merge pull request <a href="https://redirect.github.com/eminence/terminal-size/issues/58">#58</a> from eminence/check_all_streams</li> <li><a href="https://github.com/eminence/terminal-size/commit/08f0e73926c11adc3105dbf4eb84dd8c9e6c873a"><code>08f0e73</code></a> Check all streams (out/err/in) to find one that has a tty and size</li> <li>See full diff in <a href="https://github.com/eminence/terminal-size/compare/v0.2.6...v0.3.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=terminal_size&package-manager=cargo&previous-version=0.2.6&new-version=0.3.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 show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@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-09-18 07:50:17 +02:00
terminal_size = "0.3"
titlecase = "2.0"
Bump toml from 0.7.6 to 0.8.0 (#10408) Bumps [toml](https://github.com/toml-rs/toml) from 0.7.6 to 0.8.0. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/toml-rs/toml/commit/310f6ee9c5e80dd6da545d400b358b1bd5895dd4"><code>310f6ee</code></a> chore: Release</li> <li><a href="https://github.com/toml-rs/toml/commit/90da8bc4254152c4a783a098e09c8ac341dc60c7"><code>90da8bc</code></a> docs: Update changelog</li> <li><a href="https://github.com/toml-rs/toml/commit/f3e120f1a052af5ec31a4577138a914e76a52f33"><code>f3e120f</code></a> Merge pull request <a href="https://redirect.github.com/toml-rs/toml/issues/608">#608</a> from epage/enum</li> <li><a href="https://github.com/toml-rs/toml/commit/58a7101f68ecacc7de1f711f1c25c7ea458c9fdd"><code>58a7101</code></a> fix(serde): Support struct variants as table of a table</li> <li><a href="https://github.com/toml-rs/toml/commit/88a4dba3123600016b2388439750198b6c57db13"><code>88a4dba</code></a> fix(serde): Support tuple variants as table of an array</li> <li><a href="https://github.com/toml-rs/toml/commit/cf06b83424921c7ca902bba9fa18d66088af764d"><code>cf06b83</code></a> test(serde): Verify both Table and Value serializers</li> <li><a href="https://github.com/toml-rs/toml/commit/4ffa44ec16155fa73120538eb993dd489552f3ea"><code>4ffa44e</code></a> test(serde): Make parameter order more consistent</li> <li><a href="https://github.com/toml-rs/toml/commit/2b7c34c900aa2622660af495e126a75b71916cba"><code>2b7c34c</code></a> test(serde): Focus on string serialization first</li> <li><a href="https://github.com/toml-rs/toml/commit/e2a6a1ceceb87e222ab1ed13309948157a4492d1"><code>e2a6a1c</code></a> test(serde): Verify existing variant behavior</li> <li><a href="https://github.com/toml-rs/toml/commit/3f3e8329bb205f889dfbf02c2ccabc4d784271a3"><code>3f3e832</code></a> chore: Release</li> <li>Additional commits viewable in <a href="https://github.com/toml-rs/toml/compare/toml-v0.7.6...toml-v0.8.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.7.6&new-version=0.8.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 show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@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-09-18 07:50:30 +02:00
toml = "0.8"
unicode-segmentation = "1.10"
2023-11-29 18:48:18 +01:00
ureq = { version = "2.9", default-features = false, features = ["charset", "gzip", "json", "native-tls"] }
url = "2.2"
Initial implementation of umv from uutils (#10822) <!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> # Description Hi, This closes #10446 , wherein we start implementing `mv` from `uutils`. There are some stuff to iron out, particularly * Decide on behavior from ignored tests * Wait for release/PRs to be approved on `uutils` side, but still can be tested for now. See [PR approved](https://github.com/uutils/coreutils/pull/5428), and [pending](https://github.com/uutils/coreutils/pull/5429). * `--progress` does not seem to work on `uutils mv` either and have not checked whether certain `X` size has to be achieved in order for it to appear, thus something to investigate as well, but thought it wasnt important enough to not make the PR. See [issue comment](https://github.com/nushell/nushell/issues/10446#issuecomment-1764497988), on the possible strategy to follow, mainly copy what we did with `ucp`. I still left some comments on purpose particularly on tests, which of course would be removed before something is decided here. :) @fdncred <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> # 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: - [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` to check that you're using the standard code style - [X] `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)) - [X] `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` 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. -->
2024-01-18 17:20:57 +01:00
uu_mv = "0.0.23"
Add `mktemp` command (#11005) closes #10845 I've opened this a little prematurely to get some questions answered before I cleanup the code. As I started trying to better understand GNUs `mktemp` I've realized its kind of peculiar and we might want to change its behavior to introduce it to nushell. #### quiet and dry run Does it make sense to keep the `quiet` and `dry_run` flags? I don't think so. The GNU documentation says this about the dry run flag "Using the output of this command to create a new file is inherently unsafe, as there is a window of time between generating the name and using it where another process can create an object by the same name." So yeah why keep it? As far as quiet goes, does it make sense to silence the errors in nushell? #### other confusing flags According to the [gnu docs](https://www.gnu.org/software/coreutils/manual/html_node/mktemp-invocation.html), the `-t` flag is deprecated and the `-p`/ `--tempdir` are the same flag with the only difference being `--tempdir` takes an optional path, Given that, I've broken the `-p` away from `--tempdir`. Now there is one switch `--tmpdir`/`-t` and one named param `--tmpdir-path`/`-p`. GNU mktemp ``` -p DIR, --tmpdir[=DIR] interpret TEMPLATE relative to DIR; if DIR is not specified, use $TMPDIR if set, else /tmp. With this option, TEMPLATE must not be an absolute name; unlike with -t, TEMPLATE may contain slashes, but mktemp creates only the final component -t interpret TEMPLATE as a single file name component, relative to a directory: $TMPDIR, if set; else the directory specified via -p; else /tmp [deprecated] ``` to nushell mktemp ``` -p, --tmpdir-path <Filepath> # named param, must provide a path -t, --tmpdir # a switch ``` Is this a terrible idea? What should I do? --------- Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com>
2023-11-18 02:30:53 +01:00
uu_cp = "0.0.23"
uu_whoami = "0.0.23"
uu_mkdir = "0.0.23"
uu_mktemp = "0.0.23"
2023-11-20 20:38:41 +01:00
uuid = { version = "1.6", features = ["v4"] }
v_htmlescape = "0.15.0"
2023-10-09 14:31:50 +02:00
wax = { version = "0.6" }
which = { version = "6.0", optional = true }
bracoxide = "0.1.2"
chardetng = "0.1.17"
[target.'cfg(windows)'.dependencies]
winreg = "0.52"
[target.'cfg(unix)'.dependencies]
add a new inspect command for more debugging (#8028) # Description The purpose of this command is to help to debug pipelines. It works by allowing you to inject the `inspect` command into a pipeline at any point. Then it shows you what the input description is and what the input values are that are passed into `inspect`. With each step it prints this information out while also passing the value information on to the next step in the pipeline. ![image](https://user-images.githubusercontent.com/343840/218154064-e107859b-d0da-41c6-8e34-2d717639b81c.png) This command is kind of a "hack job" because it clones maybe too much and I had to get creative in order to output two different tables. I'm sure there are many ways this can be improved or combined into other commands but I wanted to start here. Note that the `inspect` output is written to stderr and the normal nushell output is written to stdout. If we were to output both to stdout, nushell would get confused. # User-Facing 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 -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # 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.
2023-02-11 19:59:11 +01:00
libc = "0.2"
umask = "2.1"
Add ulimit command (#11324) # Description Add `ulimit` command to Nushell. Closes #9563 Closes #3976 Related pr #11246 Reference: https://github.com/fish-shell/fish-shell/blob/master/fish-rust/src/builtins/ulimit.rs https://github.com/mirror/busybox/blob/master/shell/shell_common.c#L529 # User-Facing Changes ``` nushell on  ulimit is 📦 v0.88.2 via 🦀 v1.72.1 [3/246] ❯ ulimit -a ╭────┬──────────────────────────────────────────────────────────────────────────┬───────────┬───────────╮ │ # │ description │ soft │ hard │ ├────┼──────────────────────────────────────────────────────────────────────────┼───────────┼───────────┤ │ 0 │ Maximum size of core files created (kB, -c) │ unlimited │ unlimited │ │ 1 │ Maximum size of a process's data segment (kB, -d) │ unlimited │ unlimited │ │ 2 │ Controls of maximum nice priority (-e) │ 0 │ 0 │ │ 3 │ Maximum size of files created by the shell (kB, -f) │ unlimited │ unlimited │ │ 4 │ Maximum number of pending signals (-i) │ 55273 │ 55273 │ │ 5 │ Maximum size that may be locked into memory (kB, -l) │ 8192 │ 8192 │ │ 6 │ Maximum resident set size (kB, -m) │ unlimited │ unlimited │ │ 7 │ Maximum number of open file descriptors (-n) │ 1024 │ 524288 │ │ 8 │ Maximum bytes in POSIX message queues (kB, -q) │ 800 │ 800 │ │ 9 │ Maximum realtime scheduling priority (-r) │ 0 │ 0 │ │ 10 │ Maximum stack size (kB, -s) │ 8192 │ unlimited │ │ 11 │ Maximum amount of CPU time in seconds (seconds, -t) │ unlimited │ unlimited │ │ 12 │ Maximum number of processes available to the current user (-u) │ 55273 │ 55273 │ │ 13 │ Maximum amount of virtual memory available to each process (kB, -v) │ unlimited │ unlimited │ │ 14 │ Maximum number of file locks (-x) │ unlimited │ unlimited │ │ 15 │ Maximum contiguous realtime CPU time (-y) │ unlimited │ unlimited │ ╰────┴──────────────────────────────────────────────────────────────────────────┴───────────┴───────────╯ nushell on  ulimit is 📦 v0.88.2 via 🦀 v1.72.1 ❯ ulimit -s ╭───┬─────────────────────────────┬──────┬───────────╮ │ # │ description │ soft │ hard │ ├───┼─────────────────────────────┼──────┼───────────┤ │ 0 │ Maximum stack size (kB, -s) │ 8192 │ unlimited │ ╰───┴─────────────────────────────┴──────┴───────────╯ nushell on  ulimit is 📦 v0.88.2 via 🦀 v1.72.1 ❯ ulimit -s 100 nushell on  ulimit is 📦 v0.88.2 via 🦀 v1.72.1 ❯ ulimit -s ╭───┬─────────────────────────────┬──────┬──────╮ │ # │ description │ soft │ hard │ ├───┼─────────────────────────────┼──────┼──────┤ │ 0 │ Maximum stack size (kB, -s) │ 100 │ 100 │ ╰───┴─────────────────────────────┴──────┴──────╯ nushell on  ulimit is 📦 v0.88.2 via 🦀 v1.72.1 ``` # Tests + Formatting - [x] add commands::ulimit::limit_set_soft1 - [x] add commands::ulimit::limit_set_soft2 - [x] add commands::ulimit::limit_set_hard1 - [x] add commands::ulimit::limit_set_hard2 - [x] add commands::ulimit::limit_set_invalid1 - [x] add commands::ulimit::limit_set_invalid2 - [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` to check that you're using the standard code style - [x] `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)) - [x] `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` to run the tests for the standard library
2023-12-15 14:11:17 +01:00
nix = { version = "0.27", default-features = false, features = ["user", "resource"] }
Fix build for BSDs (#11372) # Description This PR fixes build for BSD variants (including FreeBSD and NetBSD). Currently, `procfs` only support linux, android and l4re, and 0cba269d80953bc391070bdc8e878d276ecd1180 only adds support for NetBSD, this PR should work on all BSD variants. https://github.com/eminence/procfs/blob/b153b782a5957aa619ed744d0ac8bbe4734601ed/procfs/build.rs#L4-L8 Fixes #11373 # User-Facing Changes * before ```console nibon7@fbsd /d/s/nushell ((70f7db14))> cargo build Compiling tempfile v3.8.1 Compiling procfs v0.16.0 Compiling toml_edit v0.21.0 Compiling native-tls v0.2.11 error: failed to run custom build command for `procfs v0.16.0` Caused by: process didn't exit successfully: `/data/source/nushell/target/debug/build/procfs-d59599f40f32f0d5/build-script-build` (exit status: 1) --- stderr Building procfs on an for a unsupported platform. Currently only linux and android are supported (Your current target_os is freebsd) warning: build failed, waiting for other jobs to finish... ``` * after ```console nushell on  bsd [✘!?] is 📦 v0.88.2 via 🦀 v1.74.1 ❯ version ╭────────────────────┬───────────────────────────────────────────╮ │ version │ 0.88.2 │ │ branch │ bsd │ │ commit_hash │ 151edef186470e454367ac6e4b2178188062c1f9 │ │ build_os │ freebsd-x86_64 │ │ build_target │ x86_64-unknown-freebsd │ │ rust_version │ rustc 1.74.1 (a28077b28 2023-12-04) │ │ rust_channel │ stable-x86_64-unknown-freebsd │ │ cargo_version │ cargo 1.74.1 (ecb9851af 2023-10-18) │ │ build_time │ 2023-12-19 10:12:15 +00:00 │ │ build_rust_channel │ debug │ │ allocator │ mimalloc │ │ features │ default, extra, sqlite, trash, which, zip │ │ installed_plugins │ │ ╰────────────────────┴───────────────────────────────────────────╯ nushell on  bsd [✘!?] is 📦 v0.88.2 via 🦀 v1.74.1 ❯ cargo test --workspace commands::ulimit e>> /dev/null | rg ulimit test commands::ulimit::limit_set_filesize2 ... ok test commands::ulimit::limit_set_filesize1 ... ok test commands::ulimit::limit_set_hard1 ... ok test commands::ulimit::limit_set_hard2 ... ok test commands::ulimit::limit_set_invalid1 ... ok test commands::ulimit::limit_set_invalid3 ... ok test commands::ulimit::limit_set_invalid4 ... ok test commands::ulimit::limit_set_invalid5 ... ok test commands::ulimit::limit_set_soft2 ... ok test commands::ulimit::limit_set_soft1 ... ok nushell on  bsd [✘!?] is 📦 v0.88.2 via 🦀 v1.74.1 ``` # 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 std testing; testing run-tests --path crates/nu-std"` 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. -->
2023-12-19 15:58:45 +01:00
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
procfs = "0.16.0"
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies.trash]
optional = true
version = "3.1"
[target.'cfg(windows)'.dependencies.windows]
features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
Improve `registry value` return types (#10806) r? @fdncred Last one, I hope. At least short of completely redesigning `registry query`'s interface. (Which I wouldn't implement without asking around first.) # Description User-Facing Changes has the general overview. Inline comments provide a lot of justification on specific choices. Most of the type conversions should be reasonably noncontroversial, but expanding `REG_EXPAND_SZ` needs some justification. First, an example of the behavior there: ```shell > # release nushell: > version | select version commit_hash | to md --pretty | version | commit_hash | | ------- | ---------------------------------------- | | 0.85.0 | a6f62e05ae5b4e9ba4027fbfffd21025a898783e | > registry query --hkcu Environment TEMP | get value %USERPROFILE%\AppData\Local\Temp > # with this patch: > version | select version commit_hash | to md --pretty | version | commit_hash | | ------- | ---------------------------------------- | | 0.86.1 | 0c5a4c991f1a77bcbe5a86bc8f4469ecf1218fe9 | > registry query --hkcu Environment TEMP | get value C:\Users\CAD\AppData\Local\Temp > # Microsoft CLI tooling behavior: > ^pwsh -c `(Get-ItemProperty HKCU:\Environment).TEMP` C:\Users\CAD\AppData\Local\Temp > ^reg query HKCU\Environment /v TEMP HKEY_CURRENT_USER\Environment TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp ``` As noted in the inline comments, I'm arguing that it makes more sense to eagerly expand the %EnvironmentString% placeholders, as none of Nushell's path functionality will interpret these placeholders. This makes the behavior of `registry query` match the behavior of pwsh's `Get-ItemProperty` registry access, and means that paths (the most common use of `REG_EXPAND_SZ`) are actually usable. This does *not* break nu_script's [`update-path`](https://github.com/nushell/nu_scripts/blob/main/sourced/update-path.nu); it will just be slightly inefficient as it will not find any `%Placeholder%`s to manually expand anymore. But also, note that `update-path` is currently *wrong*, as a path including `%LocalAppData%Low` is perfectly valid and sometimes used (to go to `Appdata\LocalLow`); expansion isn't done solely on a path segment basis, as is implemented by `update-path`. I believe that the type conversions implemented by this patch are essentially always desired. But if we want to keep `registry query` "pure", we could easily introduce a `registry get`[^get] which does the more complete interpretation of registry types, and leave `registry query` alone as doing the bare minimum. Or we could teach `path expand` to do `ExpandEnvironmentStringsW`. But REG_EXPAND_SZ being the odd one out of not getting its registry type semantics decoded by `registry query` seems wrong. [^get]: This is the potential redesign I alluded to at the top. One potential change could be to make `registry get Environment` produce `record<Path: string, TEMP: string, TMP: string>` instead of `registry query`'s `table<name: string, value: string, type: string>`, the idea being to make it feel as native as possible. We could even translate between Nu's cell-path and registry paths -- cell paths with spaces do actually work, if a bit awkwardly -- or even introduce lazy records so the registry can be traversed with normal data manipulation ... but that all seems a bit much. # User-Facing Changes - `registry query`'s produced `value` has changed. Specifically: - ❗ Rows `where type == REG_EXPAND_SZ` now expand `%EnvironmentVarable%` placeholders for you. For example, `registry query --hkcu Environment TEMP | get value` returns `C:\Users\CAD\AppData\Local\Temp` instead of `%USERPROFILE%\AppData\Local\Temp`. - You can restore the old behavior and preserve the placeholders by passing a new `--no-expand` switch. - Rows `where type == REG_MULTI_SZ` now provide a `list<string>` value. They previously had that same list, but `| str join "\n"`. - Rows `where type == REG_DWORD_BIG_ENDIAN` now provide the correct numeric value instead of a byte-swapped value. - Rows `where type == REG_QWORD` now provide the correct numeric value[^sign] instead of the value modulo 2<sup>32</sup>. - Rows `where type == REG_LINK` now provide a string value of the link target registry path instead of an internal debug string representation. (This should never be visible, as links should be transparently followed.) - Rows `where type =~ RESOURCE` now provide a binary value instead of an internal debug string representation. [^sign]: Nu's `int` is a signed 64-bit integer. As such, values >= 2<sup>63</sup> will be reported as their negative two's compliment value. This might sometimes be the correct interpretation -- the registry does not distinguish between signed and unsigned integer values -- but regedit and pwsh display all values as unsigned.
2023-10-23 14:21:27 +02:00
"Win32_System_Environment",
"Win32_System_SystemServices",
"Win32_Security",
"Win32_System_Threading",
]
version = "0.52"
[features]
2021-11-02 21:56:00 +01:00
plugin = ["nu-parser/plugin"]
2023-06-14 23:12:55 +02:00
sqlite = ["rusqlite"]
add a new inspect command for more debugging (#8028) # Description The purpose of this command is to help to debug pipelines. It works by allowing you to inject the `inspect` command into a pipeline at any point. Then it shows you what the input description is and what the input values are that are passed into `inspect`. With each step it prints this information out while also passing the value information on to the next step in the pipeline. ![image](https://user-images.githubusercontent.com/343840/218154064-e107859b-d0da-41c6-8e34-2d717639b81c.png) This command is kind of a "hack job" because it clones maybe too much and I had to get creative in order to output two different tables. I'm sure there are many ways this can be improved or combined into other commands but I wanted to start here. Note that the `inspect` output is written to stderr and the normal nushell output is written to stdout. If we were to output both to stdout, nushell would get confused. # User-Facing 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 -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # 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.
2023-02-11 19:59:11 +01:00
trash-support = ["trash"]
which-support = ["which"]
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.90.2" }
nu-test-support = { path = "../nu-test-support", version = "0.90.2" }
2023-06-14 23:12:55 +02:00
dirs-next = "2.0"
Bump mockito from 1.1.0 to 1.2.0 (#10407) Bumps [mockito](https://github.com/lipanski/mockito) from 1.1.0 to 1.2.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.2.0</h2> <ul> <li><strong>[Breaking]</strong> The minimum supported Rust version was bumped to 1.68.0</li> <li>The server pool was limited to 20 servers for <code>mac_os</code> targets to prevent hitting the file descriptor limit</li> </ul> <p>Thanks to <a href="https://github.com/kornelski"><code>@​kornelski</code></a></p> <h2>1.1.1</h2> <ul> <li><a href="https://redirect.github.com/lipanski/mockito/pull/176">Ensure</a> <code>with_chunked_body</code> supports streaming responses (as opposed to writing the entire buffer in one go)</li> </ul> <p>Thanks to <a href="https://github.com/kornelski"><code>@​kornelski</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/lipanski/mockito/commit/7514e385249b5a71b08b4cdb2fd68638f9e8600a"><code>7514e38</code></a> Bump to 1.2.0</li> <li><a href="https://github.com/lipanski/mockito/commit/be00de417e82f1331632b29acf815fc204cf8302"><code>be00de4</code></a> Merge pull request <a href="https://redirect.github.com/lipanski/mockito/issues/177">#177</a> from kornelski/pool</li> <li><a href="https://github.com/lipanski/mockito/commit/6b4073e911f74a0ec658ad60bb1f92685f34b544"><code>6b4073e</code></a> MSRV</li> <li><a href="https://github.com/lipanski/mockito/commit/9faa8251106b7cadbb5bd5dbc3cc0c5d754cebf6"><code>9faa825</code></a> Test exhausting server pool</li> <li><a href="https://github.com/lipanski/mockito/commit/3099e94471a158c5a8bdf32731db8acc8129d04a"><code>3099e94</code></a> Simplify server pool</li> <li><a href="https://github.com/lipanski/mockito/commit/99735e7c41e279e97cde75f4ccb0a983b015a61c"><code>99735e7</code></a> Bump to 1.1.1</li> <li><a href="https://github.com/lipanski/mockito/commit/3b63970619cc7638e524c3b2e61016f9c931d268"><code>3b63970</code></a> Merge pull request <a href="https://redirect.github.com/lipanski/mockito/issues/176">#176</a> from kornelski/stream</li> <li><a href="https://github.com/lipanski/mockito/commit/339bffc983260162ce371b2d14f9c23c6b21e19d"><code>339bffc</code></a> Support streaming body</li> <li><a href="https://github.com/lipanski/mockito/commit/8b7575cd3842e2dc1b227453ecd99370866dc2c4"><code>8b7575c</code></a> Simplify server pool test</li> <li>See full diff in <a href="https://github.com/lipanski/mockito/compare/1.1.0...1.2.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=1.1.0&new-version=1.2.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 show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@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-09-18 07:50:08 +02:00
mockito = { version = "1.2", default-features = false }
quickcheck = "1.0"
quickcheck_macros = "1.0"
rstest = { version = "0.18", default-features = false }