mirror of
https://github.com/nushell/nushell.git
synced 2024-11-25 09:53:43 +01:00
e63976df7e
9600 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Darren Schroeder
|
b6eda33438
|
allow != for polars (#14263)
# Description This PR fixes a problem where not equal in polars wasn't working with strings. ## Before ```nushell let a = ls | polars into-df $a.type != "dir" Error: nu:🐚:type_mismatch × Type mismatch during operation. ╭─[entry #16:1:1] 1 │ $a.type != "dir" · ─┬ ─┬ ──┬── · │ │ ╰── string · │ ╰── type mismatch for operator · ╰── NuDataFrame ╰──── ``` ## After ```nushell let a = ls | polars into-df $a.type != "dir" ╭──#──┬─type──╮ │ 0 │ false │ │ 1 │ false │ │ 2 │ false │ ... ``` /cc @ayax79 to make sure I did this right. # 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. --> |
||
Bruce Weirdan
|
ab641d9f18
|
Fix the order of preference for VISUAL and EDITOR (#14275)
# Description The order in which Nushell consulted `$env.EDITOR` and `$env.VISUAL` was wrong. Most other programs check `$env.VISUAL` first and then fall back to `$env.EDITOR` (for historic reasons). References: * https://wiki.archlinux.org/title/Environment_variables#Default_programs * https://help.ubuntu.com/community/EnvironmentVariables#Preferred_application_variables * https://unix.stackexchange.com/a/4861 * https://git-scm.com/docs/git-var # User-Facing Changes Users will now be able to use those preferences variables the same way they are used in other programs. # Tests + Formatting That part wasn't tested before, and I don't think it's necessary to test it now. # After Submitting PR to the docs repo is here: nushell/nushell.github.io#1621 |
||
Bahex
|
c7e128eed1
|
add table params support to url join and url build-query (#14239)
Add `table<key, value>` support to `url join` for the `params` field, and as input to `url build-query` #14162 # Description ```nushell { "scheme": "http", "username": "usr", "password": "pwd", "host": "localhost", "params": [ ["key", "value"]; ["par_1", "aaa"], ["par_2", "bbb"], ["par_1", "ccc"], ["par_2", "ddd"], ], "port": "1234", } | url join ``` ``` http://usr:pwd@localhost:1234?par_1=aaa&par_2=bbb&par_1=ccc&par_2=ddd ``` --- ```nushell [ ["key", "value"]; ["par_1", "aaa"], ["par_2", "bbb"], ["par_1", "ccc"], ["par_2", "ddd"], ] | url build-query ``` ``` par_1=aaa&par_2=bbb&par_1=ccc&par_2=ddd ``` # User-Facing Changes ## `url build-query` - can no longer accept one row table input as if it were a record --------- Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com> |
||
Solomon
|
cc0259bbed
|
don't include import path in args to aliased external commands (#14231)
Fixes #13776 # User-Facing Changes Arguments to aliased externals no longer include nested import paths: ```diff module foo { export alias bar = ^echo } use foo foo bar baz -bar baz +baz ``` |
||
Solomon
|
23fba6d2ea
|
correctly parse table literals as lists (#14226)
# User-Facing Changes Table literal arguments to list parameters are now correctly parsed: ```diff def a [l: list<any>] { $l | to nuon }; a [[a]; [2]] -[[a]] +[[a]; [2]] ``` |
||
Bahex
|
3182adb6a0
|
Url split query (#14211)
Addresses the following points from #14162 > - There is no built-in counterpart to url build-query for splitting a query string There is `from url`, which, due to naming, is a little hard to discover and suffers from the following point > - url parse can create records with duplicate keys > - url parse's params should either: > - ~group the same keys into a list.~ > - instead of a record, be a key-value table. (table<key: string, value: string>) # Description ## `url split-query` Counterpart to `url build-query`, splits a url encoded query string to key value pairs, represented as `table<key: string, value: string>` ``` > "a=one&a=two&b=three" | url split-query ╭───┬─────┬───────╮ │ # │ key │ value │ ├───┼─────┼───────┤ │ 0 │ a │ one │ │ 1 │ a │ two │ │ 2 │ b │ three │ ╰───┴─────┴───────╯ ``` ## `url parse` The output's `param` field is now a table as well, mirroring the new `url split-query` ``` > 'http://localhost?a=one&a=two&b=three' | url parse ╭──────────┬─────────────────────╮ │ scheme │ http │ │ username │ │ │ password │ │ │ host │ localhost │ │ port │ │ │ path │ / │ │ query │ a=one&a=two&b=three │ │ fragment │ │ │ │ ╭───┬─────┬───────╮ │ │ params │ │ # │ key │ value │ │ │ │ ├───┼─────┼───────┤ │ │ │ │ 0 │ a │ one │ │ │ │ │ 1 │ a │ two │ │ │ │ │ 2 │ b │ three │ │ │ │ ╰───┴─────┴───────╯ │ ╰──────────┴─────────────────────╯ ``` # User-Facing Changes - `url parse`'s output has the mentioned change, which is backwards incompatible. |
||
Darren Schroeder
|
d52ec65f18
|
update human-date-parser conversion to use local timezone (#14266)
# Description This PR tries to fix https://github.com/nushell/nushell/issues/14195 by setting the local time and timezone after conversion without changing the time. ### Before ```nushell ❯ 'in 10 minutes' | into datetime Tue, 5 Nov 2024 12:59:58 -0600 (in 9 minutes) ❯ 'yesterday' | into datetime Sun, 3 Nov 2024 18:00:00 -0600 (2 days ago) ❯ 'tomorrow' | into datetime Tue, 5 Nov 2024 18:00:00 -0600 (in 5 hours) ❯ 'today' | into datetime Mon, 4 Nov 2024 18:00:00 -0600 (18 hours ago) ``` ### After (these are correct) ```nushell ❯ 'in 10 minutes' | into datetime Tue, 5 Nov 2024 12:58:44 -0600 (in 9 minutes) ❯ 'yesterday' | into datetime Mon, 4 Nov 2024 12:49:04 -0600 (a day ago) ❯ 'tomorrow' | into datetime Wed, 6 Nov 2024 12:49:20 -0600 (in a day) ❯ 'today' | into datetime Tue, 5 Nov 2024 12:52:06 -0600 (now) ``` # 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. --> |
||
dependabot[bot]
|
b968376be9
|
Bump crate-ci/typos from 1.26.8 to 1.27.0 (#14272)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.26.8 to 1.27.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/releases">crate-ci/typos's releases</a>.</em></p> <blockquote> <h2>v1.27.0</h2> <h2>[1.27.0] - 2024-11-01</h2> <h3>Features</h3> <ul> <li>Updated the dictionary with the <a href="https://redirect.github.com/crate-ci/typos/issues/1106">October 2024</a> changes</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's changelog</a>.</em></p> <blockquote> <h2>[1.27.0] - 2024-11-01</h2> <h3>Features</h3> <ul> <li>Updated the dictionary with the <a href="https://redirect.github.com/crate-ci/typos/issues/1106">October 2024</a> changes</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
90bd8c82b7
|
Bump notify-debouncer-full from 0.3.1 to 0.3.2 (#14271)
Bumps [notify-debouncer-full](https://github.com/notify-rs/notify) from 0.3.1 to 0.3.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/notify-rs/notify/releases">notify-debouncer-full's releases</a>.</em></p> <blockquote> <h2>debouncer-full-0.3.2</h2> <h2>What's Changed</h2> <ul> <li>FIX: ordering of debounced events could lead to a panic with Rust 1.81.0 and above by <a href="https://github.com/dfaust"><code>@dfaust</code></a> in <a href="https://redirect.github.com/notify-rs/notify/pull/643">notify-rs/notify#643</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/notify-rs/notify/compare/debouncer-full-0.3.1...debouncer-full-0.3.2">https://github.com/notify-rs/notify/compare/debouncer-full-0.3.1...debouncer-full-0.3.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/notify-rs/notify/blob/main/CHANGELOG.md">notify-debouncer-full's changelog</a>.</em></p> <blockquote> <h2>debouncer-full 0.3.2 (2024-09-29)</h2> <ul> <li>FIX: ordering of debounced events could lead to a panic with Rust 1.81.0 and above <a href="https://redirect.github.com/notify-rs/notify/issues/636">#636</a></li> </ul> <p><a href="https://redirect.github.com/notify-rs/notify/issues/636">#636</a>: <a href="https://redirect.github.com/notify-rs/notify/issues/636">notify-rs/notify#636</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
0955e8c5b6
|
Bump scraper from 0.20.0 to 0.21.0 (#14270)
Bumps [scraper](https://github.com/causal-agent/scraper) from 0.20.0 to 0.21.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/causal-agent/scraper/releases">scraper's releases</a>.</em></p> <blockquote> <h2>0.21.0</h2> <h2>What's Changed</h2> <ul> <li>Bump indexmap from 2.3.0 to 2.4.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/197">rust-scraper/scraper#197</a></li> <li>Bump ego-tree from 0.6.2 to 0.7.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/198">rust-scraper/scraper#198</a></li> <li>migrate once_cell::unsync::OnceCell to std::cell::OnceCell + drop dep… by <a href="https://github.com/LoZack19"><code>@LoZack19</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/199">rust-scraper/scraper#199</a></li> <li>Introduce workspaces by <a href="https://github.com/LoZack19"><code>@LoZack19</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/201">rust-scraper/scraper#201</a></li> <li>Now that ego-tree's Traverse is a fused iterator, so are our Select and Text by <a href="https://github.com/adamreichold"><code>@adamreichold</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/202">rust-scraper/scraper#202</a></li> <li>Bump indexmap from 2.4.0 to 2.5.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/204">rust-scraper/scraper#204</a></li> <li>Bump ego-tree from 0.8.0 to 0.9.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/205">rust-scraper/scraper#205</a></li> <li>Bump indexmap from 2.5.0 to 2.6.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/211">rust-scraper/scraper#211</a></li> <li>Bump selectors, cssparser and html5ever by <a href="https://github.com/adamreichold"><code>@adamreichold</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/214">rust-scraper/scraper#214</a></li> <li>Handle missing Token::Delim variant when rendering errors by <a href="https://github.com/adamreichold"><code>@adamreichold</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/213">rust-scraper/scraper#213</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/LoZack19"><code>@LoZack19</code></a> made their first contribution in <a href="https://redirect.github.com/rust-scraper/scraper/pull/199">rust-scraper/scraper#199</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-scraper/scraper/compare/v0.20.0...v0.21.0">https://github.com/rust-scraper/scraper/compare/v0.20.0...v0.21.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
ef55367224
|
Bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#14273)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/softprops/action-gh-release/releases">softprops/action-gh-release's releases</a>.</em></p> <blockquote> <h2>v2.0.9</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>maintenance release with updated dependencies</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/kbakdev"><code>@kbakdev</code></a> made their first contribution in <a href="https://redirect.github.com/softprops/action-gh-release/pull/521">softprops/action-gh-release#521</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/softprops/action-gh-release/compare/v2...v2.0.9">https://github.com/softprops/action-gh-release/compare/v2...v2.0.9</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md">softprops/action-gh-release's changelog</a>.</em></p> <blockquote> <h2>2.0.9</h2> <ul> <li>maintenance release with updated dependencies</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Douglas
|
a60f454154
|
No longer autoload deprecated-dirs (#14242)
# Description Follow-up to #13842. In that commit, using one of the `dirs`/`shells` aliases would notify the user that it would no longer be autoloaded in future releases. This is the removal stage. Side-benefit: Additional 1ms+ load time improvement # User-Facing Changes Breaking-change - `dirs` aliases are no longer autoloaded. Users can either choose to continue using the aliases by adding the following to the startup: ```nu use std/dirs shells-aliases * ``` Alternatively, users can use the `dirs` subcommands (rather than the aliases) with: ```nu use std/dirs ``` |
||
132ikl
|
7a7df3e635
|
Switch to unicase's to_folded_case (#14255)
# Description Switch `to_folded_case` to a proper case fold instead of `str::to_lowercase` now that unicase exposes its `to_folded_case` method. Rel: #10884, https://github.com/seanmonstar/unicase/issues/61 # User-Facing Changes Case insensitive sorts now do proper case folding. Old behavior: ```nushell [dreißig DREISSIG] | sort -i # => ╭───┬──────────╮ # => │ 0 │ DREISSIG │ # => │ 1 │ dreißig │ # => ╰───┴──────────╯ ``` New behavior: ```nushell [dreißig DREISSIG] | sort -i # => ╭───┬──────────╮ # => │ 0 │ dreißig │ # => │ 1 │ DREISSIG │ # => ╰───┴──────────╯ ``` |
||
Ian Manske
|
62198a29c2
|
Make to text line endings consistent for list (streams) (#14166)
# Description Fixes #14151 where `to text` treats list streams and lists values differently. # User-Facing Changes New line is always added after items in a list or record except for the last item if the `--no-newline` flag is provided. |
||
Ian Manske
|
e87a35104a
|
Remove as_i64 and as_f64 (#14258)
# Description Turns out there are duplicate conversion functions: `as_i64` and `as_f64`. In most cases, these can be replaced with `as_int` and `as_float`, respectively. |
||
Wind
|
1e051e573d
|
fix $env.FILE_PWD and $env.CURRENT_FILE inside use (#14101)
# Description Fixes: https://github.com/nushell/nushell/issues/13425 It's just a follow up to #13958. User input can be a directory, in this case, we need to use the return value of `find_in_dirs_env` carefully, so in case, I renamed maybe_file_path to maybe_file_path_or_dir to emphasize it. # User-Facing Changes `$env.FILE_PWD` and `$env.CURRENT_FILE` will be more reliable to use. # Tests + Formatting Added 2 tests |
||
Stefan Holderbach
|
e172a621f3
|
Consolidate uses of test-case to rstest (#14250)
With #14083 a dependency on `test-case` was introduced, we already depend on the more exp(a/e)nsive `rstest` for our macro-based test case generation (with fixtures on top) To save on some compilation for proc macros unify to `rstest` |
||
Ian Manske
|
9f09930834
|
Div, mod, and floor div overhaul (#14157)
# Description Dividing two ints can currently return either an int or a float. Not having a single return type for an operation between two types seems problematic. Additionally, the type signature for division says that dividing two ints returns only an int which does not match the current implementation (it can also return a float). This PR changes division between almost all types to return a float (except for `filesize / number` or `duration / number`, since there are no float representations for these types). Currently, floor division between certain types is not implemented even though the type signature allows it. Also, the current implementation of floor division uses a combination of clamping and flooring rather than simply performing floor division which this PR fixes. Additionally, the signature was changed so that `int // float`, `float // int`, and `float // float` now return float instead of int. This matches the automatic float promotion in the rest of the operators (as well as how Python does floor division which I think is the original inspiration). Since regular division has always returned fractional values (and now returns a float to reflect that), `mod` is now defined in terms of floor division. That is, `D // d = q`, `D mod d = r`, and `D = d * q + r `. This is just like the `%` operator in Python, which is also based off floor division (at least for ints and floats). Additionally, implementations missing from `mod`'s current type signature have been added (`duration mod int` and `duration mod float`). This PR also overhauls the overflow checking and errors for div, mod, and floor div. If an operation overflows, it will now cause an error. # User-Facing Changes - Div now returns a float in most cases. - Floor division now actually does floor division. - Floor division now does automatic float promotion, returning a float in more instances. - Floor division now actually allows division with filesize and durations as its type signature claimed. - Mod is now defined and implemented in terms of floor division rather than truncating division. - Mod now actually allows filesize and durations as its type signature claimed. - Div, mod, and floor div now all have proper overflow checks. ## Examples When the divisor and the dividend have the same sign, the quotient and remainder will be the same as before. (Except that this PR will give more accurate results, since it does not do an intermediate float conversion). If the signs of the divisor and dividend are different, then the results will be different, or rather actually correct. Before: ```nu let q = 8 // -3 # -3 let r = 8 mod -3 # 2 8 == $q * -3 + $r # false ``` After: ```nu let q = 8 // -3 # -3 let r = 8 mod -3 # -1 8 == $q * -3 + $r # true ``` Before: ```nu let q = -8 // 3 # -3 let r = -8 mod 3 # -2 -8 == $q * 3 + $r # false ``` After: ```nu let q = -8 // 3 # -3 let r = -8 mod 3 # 1 -8 == $q * 3 + $r # true ``` # Tests + Formatting Added a few tests. # After Submitting Probably update the docs. |
||
Charles Taylor
|
20c2de9eed
|
Empty rest args match should be an empty list (#14246)
Fixes #14145 # User-Facing Changes An empty rest match would be `null` previously. Now it will be an empty list. This is a breaking change for any scripts relying on the old behavior. Example script: ```nu match [1] { [_ ..$rest] => { match $rest { null => { "old" } [] => { "new" } } } } ``` This expression would evaluate to "old" on current nu versions and "new" with this patch. |
||
Alex Kattathra Johnson
|
22ca5a6b8d
|
Add tests to test the --max-age arg in http commands (#14245)
- fixes #14241 Signed-off-by: Alex Johnson <alex.kattathra.johnson@gmail.com> |
||
Solomon
|
8b19399b13
|
support binary input in length (#14224)
Closes #13874 # User-Facing Changes `length` now supports binary input: ```nushell > random binary 1kb | length 1000 ``` |
||
Alex Kattathra Johnson
|
d289c773d0
|
Change --max-time arg for http commands to use Duration type (#14237)
# Description Fixes #14222. The ability to set duration unit for `--max-time` when using the `http` command util. Signed-off-by: Alex Johnson <alex.kattathra.johnson@gmail.com> |
||
Doru
|
a935e0720f
|
no deref in touch (#14214)
<!-- 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 <!-- 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. --> Adds --no-deref flag to `touch`. Nice and backwards compatible, and I get to touch symlinks. I still don't get to set their dates directly, but maybe that'll come with utouch. Some sadness in the implementation, since `set_symlink_file_times` doesn't take Option values and we call it twice with the old "read" values from reference (or now, if missing). This shouldn't be a big concern since `touch` already did two calls if you set both mtime and atime. Also, `--no-deref` applies both to the reference file, and to the target file. No splitting them up, because that's silly. Can always bikeshed. I nicked `--no-deref` from the uutils flag, and made the short flag `-d` because it obviously can't be `-h`. I thought of `-S` like in `glob`, for the "negative/filter out" uppercase short letters. Ultimately I don't think it matters much. Should fix #14212 since it's not really tied to uutils, besides the comment about setting a `datetime` value directly. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> New flag. # 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 > ``` --> Maybe. # 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. --> |
||
Alex Ionescu
|
1c3ff179bc
|
Improve CellPath display output (#14197)
<!-- 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 <!-- 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. --> Fixes: #13362 This PR fixes the `Display` impl for `CellPath`, as laid out in #13362 and #14090: ```nushell > $.0."0" $.0."0" > $."foo.bar".baz $."foo.bar".baz ``` # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> Cell-paths are now printed using the same `$.` notation that is used to create them, and ambiguous column names are properly quoted. # 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. --> |
||
Jan Klass
|
ccab3d6b6e
|
Improve comment wording in run_external.rs (#14230)
verb 'setup' -> 'set up' setup as verb [is a misspelling of set up](https://en.wiktionary.org/wiki/setup#Verb) * [verb: set up](https://en.wiktionary.org/wiki/set_up) * [noun: setup](https://en.wiktionary.org/wiki/setup) *I split this from #14229 typo corrections because 'setup' is not as clear-cut wrong. Having read the dictionary pages (linked) I'm even more confident in this change being correct rather than only subjectively better.* Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com> |
||
Jan Klass
|
3e39fae6e1
|
Fix comment typos in run_external.rs (#14229) | ||
Kieron Wilkinson
|
d575fd1c3a
|
Tests for new Alpine and Debian image builds (#14225) | ||
Wind
|
0a2fb137af
|
don't run subcommand if it's surrounded with backtick quote (#14210)
# Description Fixes: #14202 After looking into the issue, I think #13910 it's not good to cut the span if it's in external argument. This pr is somehow revert the change, and fix https://github.com/nushell/nushell/issues/13431 in another way. It introduce a new state named `State::BackTickQuote`, so if an external arg include backtick quote, it enters the state, so backtick quote won't be the body of a string. # User-Facing Changes ### Before ```nushell > ^echo `(echo aa)` aa > ^echo `"aa"` # maybe it's not right to remove the inner quote. aa ``` ### After ```nushell > ^echo `(echo aa)` (echo aa) > ^echo `"aa"` # inner quote is keeped if there are backtick quote outside. "aa" ``` # Tests + Formatting Added 3 tests. |
||
dependabot[bot]
|
4907575d3d
|
Bump chrono-tz from 0.8.6 to 0.10.0 (#14205)
Bumps [chrono-tz](https://github.com/chronotope/chrono-tz) from 0.8.6 to 0.10.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/chronotope/chrono-tz/releases">chrono-tz's releases</a>.</em></p> <blockquote> <h2>chrono-tz v0.10.0: 2024b</h2> <p><strong>TZDB</strong> version 2024b (2024-09-05).</p> <h2>Changes</h2> <ul> <li>Make <code>OffsetName::abbreviation</code> return an <code>Option</code>. This reflects that numeric values such as <code>+11</code> are no longer encoded in the upstream TZDB as abbreviations (<a href="https://redirect.github.com/chronotope/chrono-tz/issues/185">#185</a>).</li> </ul> <h2>TZDB 2024b</h2> <blockquote> <p>The 2024b release of the tz code and data is available.</p> <p>This release is prompted by the accumulated weight of many non-urgent changes to both code and data. It changes one timestamp abbreviation, for the long-obsolete System V setting TZ='MET'; see below. Otherwise, the timestamps affected by this release all predate April 2008, so you can skip this release if your application uses only tzdata and does not use older timestamps.</p> <p>This release contains the following changes:</p> <h3>Briefly:</h3> <p>Improve historical data for Mexico, Mongolia, and Portugal. System V names are now obsolescent. The main data form now uses %z. The code now conforms to RFC 8536 for early timestamps. Support POSIX.1-2024, which removes asctime_r and ctime_r. Assume POSIX.2-1992 or later for shell scripts. SUPPORT_C89 now defaults to 1.</p> <h3>Changes to past timestamps</h3> <p>Asia/Choibalsan is now an alias for Asia/Ulaanbaatar rather than being a separate Zone with differing behavior before April 2008. This seems better given our wildly conflicting information about Mongolia's time zone history. (Thanks to Heitor David Pinto.)</p> <p>Historical transitions for Mexico have been updated based on official Mexican decrees. The affected timestamps occur during the years 1921-1927, 1931, 1945, 1949-1970, and 1981-1997. The affected zones are America/Bahia_Banderas, America/Cancun, America/Chihuahua, America/Ciudad_Juarez, America/Hermosillo, America/Mazatlan, America/Merida, America/Mexico_City, America/Monterrey, America/Ojinaga, and America/Tijuana. (Thanks to Heitor David Pinto.)</p> <p>Historical transitions for Portugal, represented by Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira, have been updated based on a close reading of old Portuguese legislation, replacing previous data mainly originating from Whitman and Shanks & Pottenger. These changes affect a few transitions in 1917-1921, 1924, and 1940 throughout these regions by a few hours or days, and various timestamps between 1977 and 1993 depending on the region. In particular, the Azores and Madeira did not observe DST from 1977 to 1981. Additionally, the adoption of standard zonal time in former Portuguese colonies have been adjusted: Africa/Maputo in 1909, and Asia/Dili by 22 minutes at the start of 1912. (Thanks to Tim Parenti.)</p> <h3>Changes to past tm_isdst flags</h3> <p>The period from 1966-04-03 through 1966-10-02 in Portugal is now modeled as DST, to more closely reflect how contemporaneous changes in law entered into force.</p> <h3>Changes to data</h3> <p>Names present only for compatibility with UNIX System V (last released in the 1990s) have been moved to 'backward'. These names, which for post-1970 timestamps mostly just duplicate data of geographical names, were confusing downstream uses. Names moved to 'backward' are now links to geographical names. This affects behavior for TZ='EET' for some pre-1981 timestamps, for TZ='CET' for some pre-1947 timestamps, and for TZ='WET' for some pre-1996 timestamps. Also, TZ='MET' now behaves like TZ='CET' and so uses the abbreviation "CET" rather than "MET". Those needing the previous TZDB behavior, which does not match any real-world clocks, can find the old entries in 'backzone'. (Problem reported by Justin Grant.)</p> <p>The main source files' time zone abbreviations now use %z, supported by zic since release 2015f and used in vanguard form since release 2022b. For example, America/Sao_Paulo now contains the zone continuation line "-3:00 Brazil %z", which is less error prone than the old "-3:00 Brazil -03/-02". This does not change the represented data: the generated TZif files are unchanged. Rearguard form still avoids %z, to support obsolescent parsers.</p> <p>Asia/Almaty has been removed from zonenow.tab as it now agrees with Asia/Tashkent for future timestamps, due to Kazakhstan's 2024-02-29 time zone change. Similarly, America/Scoresbysund has been removed, as it now agrees with America/Nuuk due to its 2024-03-31 time zone change.</p> </blockquote> <h2>chrono-tz v0.9.0: 2024a</h2> <p><strong>TZDB</strong> version <a href="https://mm.icann.org/pipermail/tz-announce/2024-February/000081.html">2024a</a> (2024-02-01).</p> <h2>Changes</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Justin Ma
|
4200df21d3
|
Add RELEASE_QUERY_API build arg for Dockerfiles (#14209)
<!-- 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 <!-- 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. --> Add `RELEASE_QUERY_API` build arg for all Dockerfiles, with default value set to `https://api.github.com/repos/nushell/nushell/releases/latest`, So that we can build the nightly images with the same Dockerfile but a different `RELEASE_QUERY_API` build arg. A nightly image build with the new Dockerfile could be found here: https://github.com/orgs/nushell/packages/container/nushell/297473460?tag=nightly # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> The default behavior keep the same as before # 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. --> Those who want to build a docker image with the nushell nightly release installed could run: ```nu let queryApi = http get https://api.github.com/repos/nushell/nightly/releases | sort-by -r created_at | get 0.url docker buildx build --build-arg $'RELEASE_QUERY_API=($queryApi)' ... ``` |
||
Dom
|
e0bb5a2bd2
|
Allow using function keys F21-F35 for keybindings (#14201)
I feel like the limitations on what can be bound are too strict. if an app _does_ support the Kitty keyboard protocol (Neovim, Reedline), I can map the function keys (F27-F35 as listed below). In Reedline everything works perfectly. The issue is for some reason we limit the keys that can be bound in Nushell, so I am unable to do that. |
||
dependabot[bot]
|
a6c2c685bc
|
Bump trash from 5.1.1 to 5.2.0 (#14206)
Bumps [trash](https://github.com/ArturKovacs/trash) from 5.1.1 to 5.2.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ArturKovacs/trash/releases">trash's releases</a>.</em></p> <blockquote> <h2>v5.2.0</h2> <h3>New Features</h3> <ul> <li> <p>Short circuiting check for empty trash <code>is_empty()</code> is a short circuiting function that checks if the trash is empty on Freedesktop compatible systems and Windows.</p> <p>The main purpose of <code>is_empty()</code> is to avoid evaluating the entire trash context when the caller is only interested in whether the trash is empty or not. This is especially useful for full trashes with many items.</p> </li> </ul> <h3>Commit Statistics</h3> <ul> <li>2 commits contributed to the release.</li> <li>56 days passed between releases.</li> <li>1 commit was understood as <a href="https://www.conventionalcommits.org">conventional</a>.</li> <li>0 issues like '(#ID)' were seen in commit messages</li> </ul> <h3>Commit Details</h3> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <ul> <li><strong>Uncategorized</strong> <ul> <li>Merge pull request <a href="https://redirect.github.com/ArturKovacs/trash/issues/120">#120</a> from joshuamegnauth54/feat-short-circuiting-is-empty (0120bbe)</li> <li>Short circuiting check for empty trash (6d59fa9)</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Byron/trash-rs/blob/master/CHANGELOG.md">trash's changelog</a>.</em></p> <blockquote> <h2>5.2.0 (2024-10-26)</h2> <h3>New Features</h3> <ul> <li> <p><!-- raw HTML omitted --> Short circuiting check for empty trash <code>is_empty()</code> is a short circuiting function that checks if the trash is empty on Freedesktop compatible systems and Windows.</p> <p>The main purpose of <code>is_empty()</code> is to avoid evaluating the entire trash context when the caller is only interested in whether the trash is empty or not. This is especially useful for full trashes with many items.</p> </li> </ul> <h3>Commit Statistics</h3> <!-- raw HTML omitted --> <ul> <li>2 commits contributed to the release.</li> <li>56 days passed between releases.</li> <li>1 commit was understood as <a href="https://www.conventionalcommits.org">conventional</a>.</li> <li>0 issues like '(#ID)' were seen in commit messages</li> </ul> <h3>Commit Details</h3> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <ul> <li><strong>Uncategorized</strong> <ul> <li>Merge pull request <a href="https://redirect.github.com/ArturKovacs/trash/issues/120">#120</a> from joshuamegnauth54/feat-short-circuiting-is-empty (<a href=" |
||
dependabot[bot]
|
1e2fa68db0
|
Bump fancy-regex from 0.13.0 to 0.14.0 (#14207)
Bumps [fancy-regex](https://github.com/fancy-regex/fancy-regex) from 0.13.0 to 0.14.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/fancy-regex/fancy-regex/releases">fancy-regex's releases</a>.</em></p> <blockquote> <h2>0.14.0</h2> <h3>Added</h3> <ul> <li>Add <code>split</code>, <code>splitn</code> methods to <code>Regex</code> to split a string into substrings (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/140">#140</a>)</li> <li>Add <code>case_insensitive</code> method to <code>RegexBuilder</code> to force case-insensitive mode (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/132">#132</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Bump bit-set dependency to 0.8 (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/139">#139</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/fancy-regex/fancy-regex/blob/main/CHANGELOG.md">fancy-regex's changelog</a>.</em></p> <blockquote> <h2>[0.14.0] - 2024-10-24</h2> <h3>Added</h3> <ul> <li>Add <code>split</code>, <code>splitn</code> methods to <code>Regex</code> to split a string into substrings (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/140">#140</a>)</li> <li>Add <code>case_insensitive</code> method to <code>RegexBuilder</code> to force case-insensitive mode (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/132">#132</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Bump bit-set dependency to 0.8 (<a href="https://redirect.github.com/fancy-regex/fancy-regex/issues/139">#139</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
599f16f15c
|
Bump unicase from 2.7.0 to 2.8.0 (#14208)
Bumps [unicase](https://github.com/seanmonstar/unicase) from 2.7.0 to 2.8.0. <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
91da168251
|
Bump crate-ci/typos from 1.26.0 to 1.26.8 (#14203)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.26.0 to 1.26.8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/releases">crate-ci/typos's releases</a>.</em></p> <blockquote> <h2>v1.26.8</h2> <h2>[1.26.8] - 2024-10-24</h2> <h2>v1.26.3</h2> <h2>[1.26.3] - 2024-10-24</h2> <h3>Fixes</h3> <ul> <li>Accept <code>additionals</code></li> </ul> <h2>v1.26.2</h2> <h2>[1.26.2] - 2024-10-24</h2> <h3>Fixes</h3> <ul> <li>Accept <code>tesselate</code> variants</li> </ul> <h2>v1.26.1</h2> <h2>[1.26.1] - 2024-10-23</h2> <h3>Fixes</h3> <ul> <li>Respect <code>--force-exclude</code> for binary files</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's changelog</a>.</em></p> <blockquote> <h2>[1.26.8] - 2024-10-24</h2> <h2>[1.26.7] - 2024-10-24</h2> <h2>[1.26.6] - 2024-10-24</h2> <h2>[1.26.5] - 2024-10-24</h2> <h2>[1.26.4] - 2024-10-24</h2> <h2>[1.26.3] - 2024-10-24</h2> <h3>Fixes</h3> <ul> <li>Accept <code>additionals</code></li> </ul> <h2>[1.26.2] - 2024-10-24</h2> <h3>Fixes</h3> <ul> <li>Accept <code>tesselate</code> variants</li> </ul> <h2>[1.26.1] - 2024-10-23</h2> <h3>Fixes</h3> <ul> <li>Respect <code>--force-exclude</code> for binary files</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Alex Ionescu
|
e104bccfb9
|
Drop once_cell dependency (#14198)
This PR drops the `once_cell` dependency from all Nu crates, replacing uses of the [`Lazy`](https://docs.rs/once_cell/latest/once_cell/sync/struct.Lazy.html) type with its `std` equivalent, [`LazyLock`](https://doc.rust-lang.org/std/sync/struct.LazyLock.html). |
||
Douglas
|
74bd0e32cc
|
ansi -l includes previews of attributes (e.g., bold, dimmed, blink, etc.) (#14196)
# Description A few simple changes: * Extends the range of previews to include the attributes - Bold, italic, underline, etc. * Also resets the colors before *every* preview. Previously we weren't doing this, so the "string" theme color was bleeding into a few previews (mostly, if not all, `bg` ones). Now the "default foreground" color is used for any preview without an explicit foreground color. * Moves the preview code into the `if use_ansi_coloring` block as a stupid-nitpick optimization. There's no reason to populate the previews when they are explicitly not shown with `use_ansi_coloring: false`. * Moves `reset` to the bottom of the attribute list so that it isn't previewed. This is a bit of a nitpick as well since internally we send the same code for both a `reset` and `attr_normal` (which is correct), but semantically a `reset` doesn't seem like a "previewable" thing, whereas "normal" text can be demonstrated with a preview. # User-Facing Changes `ansi -l` now shows additional previews # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting N/A |
||
Alex Ionescu
|
03015ed33f
|
Show ? for optional entries when displaying CellPath s (#14042)
<!-- 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 <!-- 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. --> This PR makes the `Display` implementation for `CellPath` show a `?` suffix on every optional entry, which makes the output consistent with the language syntax. Before this PR, the printing of cell paths was confusing, e.g. `$.x` and `$.x?` were both printed as `x`. Now, the second one is printed as `x?`. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> The formatting of cell paths now matches the syntax used to create them, reducing confusion. # 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 > ``` --> All tests pass, including `stdlib` tests. # 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. --> |
||
Alex Ionescu
|
79ea70d4ec
|
Fix quoting in to nuon and refactor quoting functions (#14180)
<!-- 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 <!-- 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. --> This PR fixes the quoting and escaping of column names in `to nuon`. Before the PR, column names with quotes inside them would get quoted, but not escaped: ```nushell > { 'a"b': 2 } | to nuon { "a"b": 2 } > { 'a"b': 2 } | to nuon | from nuon Error: × error when loading nuon text ╭─[entry #1:1:27] 1 │ { "a\"b": 2 } | to nuon | from nuon · ────┬──── · ╰── could not load nuon text ╰──── Error: × error when parsing nuon text ╭─[entry #1:1:27] 1 │ { "a\"b": 2 } | to nuon | from nuon · ────┬──── · ╰── could not parse nuon text ╰──── Error: × error when parsing ╭──── 1 │ {"a"b": 2} · ┬ · ╰── Unexpected end of code. ╰──── > [['a"b']; [2] [3]] | to nuon [["a"b"]; [2], [3]] > [['a"b']; [2] [3]] | to nuon | from nuon Error: × error when loading nuon text ╭─[entry #1:1:32] 1 │ [['a"b']; [2] [3]] | to nuon | from nuon · ────┬──── · ╰── could not load nuon text ╰──── Error: × error when parsing nuon text ╭─[entry #1:1:32] 1 │ [['a"b']; [2] [3]] | to nuon | from nuon · ────┬──── · ╰── could not parse nuon text ╰──── Error: × error when parsing ╭──── 1 │ [["a"b"]; [2], [3]] · ┬ · ╰── Unexpected end of code. ╰──── ``` After this PR, the quote is escaped properly: ```nushell > { 'a"b': 2 } | to nuon { "a\"b": 2 } > { 'a"b': 2 } | to nuon | from nuon ╭─────┬───╮ │ a"b │ 2 │ ╰─────┴───╯ > [['a"b']; [2] [3]] | to nuon [["a\"b"]; [2], [3]] > [['a"b']; [2] [3]] | to nuon | from nuon ╭─────╮ │ a"b │ ├─────┤ │ 2 │ │ 3 │ ╰─────╯ ``` The cause of the issue was that `to nuon` simply wrapped column names in `'"'` instead of calling `escape_quote_string`. As part of this change, I also moved the functions related to quoting (`needs_quoting` and `escape_quote_string`) into `nu-utils`, since previously they were defined in very ad-hoc places (and, in the case of `escape_quote_string`, it was defined multiple times with the same body!). # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> `to nuon` now properly escapes quotes in column names. # 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 > ``` --> All tests pass, including workspace and stdlib tests. # 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. --> |
||
Kieron Wilkinson
|
3ec76af96e
|
Add Debian Dockerfile (#14193)
# Description Add Dockerfile for Debian/Ubuntu images. Related to #14171 and PR #14191 This is largely similar to the Alpine version, however there are some minor differences: - I've specially added Debian Bookworm here to provide some stability when new major versions are released. We can bump the (LTS only perhaps) versions supported as needed. - I moved the creation of the nushell user until later to avoid a warning about the nu binary not (yet) being available. - Debian doesn't come with wget or curl. I've added wget to be similar to Alpine. I tried creating a multi-layer version to avoid installing wget (reduced attack surface) but the image was bigger due to the extra layer, so didn't seem worth being different. I can transfer the relevant changes to the Alpine image if we want to keep them easily diffable? # User-Facing Changes While this provides a Debian image by default. An Ubuntu image can be created from this by changing to `FROM ubuntu:noble`. We could later supply that as an optional argument from the build workflow to be able to build different distros and supported versions. # Tests + Formatting The images produced for Debian/Ubuntu are ~75Mb bigger as listed in `docker images`: ``` REPOSITORY TAG IMAGE ID CREATED SIZE nu-alpine latest 71c0216eddd9 44 years ago 167MB nu-debian latest cce3d91fc77c 44 years ago 243MB nu-ubuntu latest ce90497da806 44 years ago 240MB ``` I've tested a few nu commands, including polars. It seems to work okay. It makes sense to add some container-based tests once the workflows are available. I'll probably pick that up later when @hustcer has completed the migration of his workflows. Perhaps invoking a nushell-based test suite if one is available. The toolkit seems to rely on cargo and the source being available, which of course won't work here. |
||
Douglas
|
b8efd2a347
|
ansi name for clear-scrollback code (#14184)
Related to #14181 # Description Our understanding of `ESC[3J` has apparently been wrong. And I say "our" because I posted a [Super User answer](https://superuser.com/a/1738611/1210833) a couple of years ago with the same misconception (now fixed). In addition, the [crossterm crate doc](https://docs.rs/crossterm/latest/crossterm/terminal/enum.ClearType.html) is wrong on the topic. `ESC[3J` doesn't clear the screen plus the scrollback; it *only* clears the scrollback. Reference the official [Xterm Control Sequences doc](https://www.xfree86.org/4.8.0/ctlseqs.html). > CSI P s J > > Erase in Display (ED) > > P s = 0 → Erase Below (default) > P s = 1 → Erase Above > P s = 2 → Erase All > P s = 3 → Erase Saved Lines (xterm) This also means that: ```nu $"(ansi clear_entire_screen_plus_buffer)" ``` ... doesn't. This PR updates it to `ansi clear_scrollback_buffer` (short-code remains the same). # User-Facing Changes Breaking-change: `ansi clear_entire_screen_plus_buffer` is renamed `ansi clear_scrollback_buffer` # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting Self-documenting command via `ansi -l` |
||
Solomon
|
9083157baa
|
support table literal syntax in join right-table argument (#14190)
# Description Makes `join` `right-table` support table literal notation instead of parsing the column list (treated as empty data): ```diff [{a: 1}] | join [[a]; [1]] a | to nuon -[] +[[a]; [1]] ``` Fixes #13537, fixes #14134 |
||
zc he
|
6cdc9e3b77
|
Fix LSP non-ascii characters offset issues. (#14002)
<!-- 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! --> This PR is supposed to fix #13582, #11522, as well as related goto definition/reference issues (wrong position if non ascii characters ahead). # Description <!-- 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. --> <img width="411" alt="image" src="https://github.com/user-attachments/assets/9a81953c-81b2-490d-a842-14ccaefd6972"> Changes: 1. span/completion should use byte offset instead of character index 2. lsp Postions related ops in Ropey remain to use character index # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> Should be none, tested in neovim with config: ```lua require("lspconfig").nushell.setup({ cmd = { "nu", "-I", vim.fn.getcwd(), "--no-config-file", "--lsp", }, filetypes = { "nu" }, }) ``` # 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 > ``` --> tests::complete_command_with_utf_line parameters fixed to align with true lsp requests (in character index, not byte). As for the issue_11522.nu, manually tested: <img width="520" alt="image" src="https://github.com/user-attachments/assets/45496ba8-5a2d-4998-9190-d7bde31ee72c"> # 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. --> |
||
Piotr Kufel
|
f8d4adfb7a
|
Add the history import command (again) (#14083)
# Description This is mainly https://github.com/nushell/nushell/pull/13450 (which got reverted). Additionally: - always clear IDs on import, disallow specifying IDs when piping - added extra tests - create backup of the history # User-Facing Changes New command: `history import` # Tests + Formatting Added mostly integration tests and a few smaller unit tests. |
||
Bahex
|
719d9aa83c
|
provide a common implementation for query string conversions in url join and url build-query (#14173)
Addresses one of the points in #14162 # Description Factors out part of the `url::build_query::to_url` function into a separate function `url::query::record_to_qs()`, which is then used in both `url::build_query` and `url::join`. # User-Facing Changes Like with `url build-query` (after #14073), `url join` will allow list values in `params` and behavior of two commands will be same. ```nushell > {a: ["one", "two"], b: "three"} | url build-query "a=one&a=two&b=three" > {scheme: "http", host: "host", params: {a: ["one", "two"], b: "three"}} | url join "http://host?a=one&a=two&b=three" ``` # Tests + Formatting Added an example to `url join` for the new behavior. |
||
Rodrigo Friães
|
9ebaa737aa
|
feat: stor insert accepts lists (#14175)
Closes #11433 # Description This feature implements passing a list into `stor insert` through pipeline. ```bash stor create --table-name nudb --columns {bool1: bool, int1: int, float1: float} ; [[bool1 int1 float1]; [true 5 1.1], [false 8 3.14]] | stor insert --table-name nudb ``` ```bash stor create --table-name files --columns {name: str, type: str, size: int, modified: datetime} ; ls | stor insert --table-name files ``` # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` |
||
Darren Schroeder
|
88b0982dac
|
allow oem code pages to be used to decode text (#14187)
# Description This PR allows oem code pages to be used in decoding by specifying the code page number. ## Before ![image](https://github.com/user-attachments/assets/27f5d288-49f1-4743-a2fc-154f5291d190) ## After (umlauts) ![image](https://github.com/user-attachments/assets/d37c11be-b1fe-4159-822d-7d38018e1c57) closes https://github.com/nushell/nushell/issues/14168 I abstracted the decoding a bit. Here are my function comments on how/why. ```rust // Since we have two different decoding mechanisms, we allow oem_cp to be // specified by only a number like `open file | decode 850`. If this decode // parameter parses as a usize then we assume it was intentional and use oem_cp // crate. Otherwise, if it doesn't parse as a usize, we assume it was a string // and use the encoding_rs crate to try and decode 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. --> |
||
Justin Ma
|
8c2e12ad79
|
Update the dockerfile for alpine image (#14191)
<!-- 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 <!-- 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. --> Update the dockerfile for alpine image, related https://github.com/nushell/nushell/issues/14171 : 1. Add armv7 arch support 2. Add more opencontainers labels, see: https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> - Nushell docker images will be provided for each official release - There will be a `nushell:nightly` tag for the latest nightly release # After Submitting 1. The workflow that build the images will be provided in [nushell/nightly](https://github.com/nushell/nightly) repo later 2. Alpine image will be provided as the default, we may also add Debian images later |
||
Ofek Lev
|
2c31b3db07
|
Ensure default config files end with a new line (#14192)
# Description This allows users to immediately add new lines to the configuration in the usual way. |
||
Douglas
|
eedf833b6f
|
Send both 2J and 3J on clear (#14181)
Fixes #14176 # Description Since the Linux `/usr/bin/clear` binary doesn't exhibit the issue in #14176, I checked to see what ANSI escapes it is emitting: ```nu nu -c '^clear; "111\n222\n333"' | less # or bash -c 'clear -x; echo -e "111\n222\n333"' | less ``` Both show the same thing: ``` ESC[HESC[2JESC[3J111 222 333 (END) ``` This is the equivalent of: ```nu $"(ansi home)(ansi clear_entire_screen)(ansi clear_entire_screen_plus_buffer)111\n222\n333" ``` However, our internal `clear` is sending only the Home and 3J. While this *should*, in theory, work, it's (a) clear that it doesn't, and (b) `/usr/bin/clear` seemingly knows this and already has the solution (or at least workaround). From looking at the `ncurses` source, it appears it is getting this information from the terminal capabilities. That said, support for `2J` and `3J` is fairly universal, and it's what we send in `clear` and `clear --keep-scrollback` anyway, so there's no harm AFAICT in sending both like `/usr/bin/clear` does. Also tested and fixes the issue on Windows. Note that PowerShell `Clear-Host` also did not have the issue. Side-note: It's interesting that on Tmux, which doesn't support 2J and 3J, that `/usr/bin/clear` knows this and doesn't send those codes, sending just an escape-[J instead. However, Nushell's `clear`, of course, isn't checking terminal capabilities, and is continuing to send the unsupported codes. Fortunately this doesn't appear to cause any issues on Tmux. # User-Facing Changes None, AFAICT - Bugfix only. # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting N/A |