mirror of
https://github.com/nushell/nushell.git
synced 2025-08-19 14:28:50 +02:00
c150af42795d4078f0ea3b66eb1fe60d3373e510
9293 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
|
e690e7aac0 |
Fallback to extension-based content type detection when parsing Content-Type header fails (#13610)
# Description Previously when nushell failed to parse the content type header, it would emit an error instead of returning the response. Now it will fall back to `text/plain` (which, in turn, will trigger type detection based on file extension). May fix (potentially) nushell/nushell#11927 Refs: https://discord.com/channels/601130461678272522/614593951969574961/1272895236489613366 Supercedes: #13609 # User-Facing Changes It's now possible to fetch content even if the server returns an invalid content type header. Users may need to parse the response manually, but it's still better than not getting the response at all. # Tests + Formatting Added a test for the new behaviour. # After Submitting |
||
|
e841fce0f9 |
Bump indexmap from 2.3.0 to 2.4.0 (#13617)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.3.0 to 2.4.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md">indexmap's changelog</a>.</em></p> <blockquote> <h2>2.4.0</h2> <ul> <li>Added methods <code>IndexMap::append</code> and <code>IndexSet::append</code>, moving all items from one map or set into another, and leaving the original capacity for reuse.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
d7b0dc1275 |
Bump shadow-rs from 0.30.0 to 0.31.1 (#13616)
Bumps [shadow-rs](https://github.com/baoyachi/shadow-rs) from 0.30.0 to 0.31.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/baoyachi/shadow-rs/releases">shadow-rs's releases</a>.</em></p> <blockquote> <h2>[Improvement] Correct git command directory</h2> <p>ref: <a href="https://redirect.github.com/baoyachi/shadow-rs/issues/170">#170</a></p> <p>Thx <a href="https://github.com/MichaelScofield"><code>@MichaelScofield</code></a></p> <h2>Make build_with function public</h2> <p>ref:<a href="https://redirect.github.com/baoyachi/shadow-rs/issues/169">#169</a></p> <p>Thx <a href="https://github.com/MichaelScofield"><code>@MichaelScofield</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
5627c95916 |
Bump sysinfo from 0.30.11 to 0.30.13 (#13615)
Bumps [sysinfo](https://github.com/GuillaumeGomez/sysinfo) from 0.30.11 to 0.30.13. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md">sysinfo's changelog</a>.</em></p> <blockquote> <h1>0.30.13</h1> <ul> <li>macOS: Fix segfault when calling <code>Components::refresh_list</code> multiple times.</li> <li>Windows: Fix CPU arch retrieval.</li> </ul> <h1>0.30.12</h1> <ul> <li>FreeBSD: Fix network interfaces retrieval (one was always missing).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
f122065772 |
create a better error message for bad glob patterns (#13613)
# Description @sholderbach pointed out that I could've made this error message better. So, here's my attempt to make it better. This should work. I had a hard time figuring out how to trigger the error anyway because the type checker doesn't allow "bad" parameters to begin with. ### Before  ### After  # 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. --> |
||
|
4732507f46 |
allow glob to take a glob or a string as the input (#13612)
# Description This PR changes glob to take either a string or a glob as a parameter. Closes #13611 # 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. --> |
||
|
5f45f6c223 |
add more helpful error with text/xml (#13609)
# Description This PR is meant to provide a more helpful error message when using http get and the content type can't be parsed. ### Before  ### After  The span isn't perfect but there's no way to get the span of the content type that I can see. In the middle of fixing this error, I also discovered how to fix the problem in general. Since you can now see the error message complaining about double quotes (char 22 at position 0. 22 hex is `"`). The fix is just to remove all the double quotes from the content_type and then you get this. ### After After  The discussion on Discord about this is that `--raw` or `--ignore-errors` should eat this error and it "just work" as well as default to text or binary when the mime parsing fails. I agree but this PR does not implement that. # 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. --> |
||
|
a55d172e52 |
make ls -lf outputs full path in symbolic target (#13605)
# Description Fixes: #13479 # User-Facing Changes Given the following setup: ``` cd /tmp touch src_file.txt ln -s src_file.txt link1 ``` ### Before ``` ls -lf link1 | get target.0 # It outputs src_file.txt ``` ### After ``` ls -lf link1 | get target.0 # It outputs /tmp/src_file.txt ``` # Tests + Formatting Added a test for the change |
||
|
48e401834d |
Fix handling of spaces in executable names (#13596)
# Description The original code assumed a full single-string command line could be split by space to get the original argv. # User-Facing Changes Fixes an issue where `ps` would display incomplete process name if it contained space(s). # Tests + Formatting Fixes existing code, no new coverage. Existing code doesn't seem to be covered, we could be it would be somewhat involved and the fix was simple, so didn't bother.. |
||
|
d5946a9667 |
Parse time type checking for range (#13595)
# Description As part of fixing https://github.com/nushell/nushell/issues/13586, this PR checks the types of the operands when creating a range. Stuff like `0..(glob .)` will be rejected at parse time. Additionally, `0..$x` will be treated as a range and rejected if `x` is not defined, rather than being treated as a string. A separate PR will need to be made to do reject streams at runtime, so that stuff like `0..(open /dev/random)` doesn't hang. Internally, this PR adds a `ParseError::UnsupportedOperationTernary` variant, for when you have a range like `1..2..(glob .)`. # User-Facing Changes Users will now receive an error if any of the operands in the ranges they construct have types that aren't compatible with `Type::Number`. Additionally, if a piece of code looks like a range but some parse error is encountered while parsing it, that piece of code will still be treated as a range and the user will be shown the parse error. This means that a piece of code like `0..$x` will be treated as a range no matter what. Previously, if `x` weren't the expression would've been treated as a string `"0..$x"`. I feel like it makes the language less complicated if we make it less context-sensitive. Here's an example of the error you get: ``` > 0..(glob .) Error: nu::parser::unsupported_operation × range is not supported between int and any. ╭─[entry #1:1:1] 1 │ 0..(glob .) · ─────┬─────┬┬ · │ │╰── any · │ ╰── int · ╰── doesn't support these values ╰──── ``` And as an image:  Note: I made the operands themselves (above, `(glob .)`) be garbage, rather than the `..` operator itself. This doesn't match the behavior of the math operators (if you do `1 + "foo"`, `+` gets highlighted red). This is because with ranges, the range operators aren't `Expression`s themselves, so they can't be turned into garbage. I felt like here, it makes more sense to highlight the individual operand anyway. |
||
|
a432bf94ec |
support SyntaxShape::OneOf in named args (#13553)
# Description Fixes: #13253 The issue is because nushell use `parse_value` to parse named args, but `parse_value` doesn't parse `OneOf` syntax shape. # User-Facing Changes `OneOf` in named args should works again. # Tests + Formatting I think it's hard to add a test, because nushell doesn't support `oneof` syntax in custom command yet. # After Submitting NaN |
||
|
0eabbb88dd |
Replace only leading home path with ~ in the title (#13600)
# Description : - This pull request addresses issue #13594 where any substring of the path that matches the home directory is replaced with `~` in the title bar. This was problematic because partial matches within the path were also being replaced. --------- Signed-off-by: Aakash788 <aakashparmar788@gmail.com> Co-authored-by: sholderbach <sholderbach@users.noreply.github.com> |
||
|
80c8edcfb4 |
Include only *.nu files in the vendor autoload (#13599)
# Description Fixes #13587 # User-Facing Changes Files without ending or non-`*.nu` files will not be loaded as vendor/configuration files. # Tests + Formatting So far we don't have any tests for that.. |
||
|
059167ac96 |
Make error-message more helpful when user invokes a non-executable file (#13589)
# Description Fixes Issue #13477 This adds a check to see if a user is trying to invoke a (non-executable) file as a command and returns a helpful error if so. EDIT: this will not work on Windows, and is arguably not relevant there, because of the different semantics of executables. I think the equivalent on Windows would be if a user tries to invoke `./foo`, we should look for `foo.exe` or `foo.bat` in the directory and recommend that if it exists. # User-Facing Changes When a user invokes an unrecognized command that is the path to an existing file, the error used to say: `{name} is neither a Nushell built-in or a known external command` This PR proposes to change the message to: `{name} refers to a file that is not executable. Did you forget to to set execute permissions?` # Tests + Formatting Ran cargo fmt, clippy and test on the workspace. EDIT: added test asserting the new behavior |
||
|
4e205cd9a7 |
Add --raw switch to print for binary data (#13597)
# Description Something I meant to add a long time ago. We currently don't have a convenient way to print raw binary data intentionally. You can pipe it through `cat` to turn it into an unknown stream, or write it to a file and read it again, but we can't really just e.g. generate msgpack and write it to stdout without this. For example: ```nushell [abc def] | to msgpack | print --raw ``` This is useful for nushell scripts that will be piped into something else. It also means that `nu_plugin_nu_example` probably doesn't need to do this anymore, but I haven't adjusted it yet: ```nushell def tell_nushell_encoding [] { print -n "\u{0004}json" } ``` This happens to work because 0x04 is a valid UTF-8 character, but it wouldn't be possible if it were something above 0x80. `--raw` also formats other things without `table`, I figured the two things kind of go together. The output is kind of like `to text`. Debatable whether that should share the same flag, but it was easier that way and seemed reasonable. # User-Facing Changes - `print` new flag: `--raw` # Tests + Formatting Added tests. # After Submitting - [ ] release notes (command modified) |
||
|
18772b73b3 |
Add parse error for external commands used in assignment without caret (#13585)
# Description As per our Wednesday meeting, this adds a parse error when something that would be parsed as an external call is present at the top level, unless the head of the external call begins with a caret (to make it explicit). I tried to make the error quite descriptive about what should be done. # User-Facing Changes These now cause a parse error: ```nushell $foo = bar $foo = `bar` ``` These would have been interpreted as strings before this version, but now they'd be interpreted as external calls. This behavior is consistent with `let`/`mut` (which is unaffected by this change). Here is an example of the error: ``` Error: × External command calls must be explicit in assignments ╭─[entry #3:1:8] 1 │ $foo = bar · ─┬─ · ╰── add a caret (^) before the command name if you intended to run and capture its output ╰──── help: the parsing of assignments was changed in 0.97.0, and this would have previously been treated as a string. Alternatively, quote the string with single or double quotes to avoid it being interpreted as a command name. This restriction may be removed in a future release. ``` # Tests + Formatting Tests added to cover the change. Note made about it being temporary. |
||
|
983014cc40 |
Clean up key event handling (#13574)
# Description Cleanups: - Add "key_press" to event reading function names to match reality - Move the relevant comment about why only key press events are interesting one layer up - Remove code duplication in handle_events - Make `try_next` try harder (instead of bail on a boring event); I think that was the original intention - Remove recursion from `next` (I think that's clearer? but maybe just what I'm used to) # User-Facing Changes None # Tests + Formatting This cleans up existing code, no new test coverage. |
||
|
4ff33933dd |
Merge polars sink and polars to-* to polars save (#13568)
# Description This pull request merges `polars sink` and `polars to-*` into one command `polars save`. # User-Facing Changes - `polars to-*` commands have all been replaced with `polars save`. When saving a lazy frame to a type that supports a polars sink operation, a sink operation will be performed. Sink operations are much more performant, performing a collect while streaming to the file system. |
||
|
035308bb1d |
Bump typo with new ignore (#13563)
Supersedes #13554 (not sure how to narrow the word ignore to a file, maybe the better course of action would be to mark this file as an ignore with all the cryptic fileendings) |
||
|
e530e7d654 |
Make the math commands const (#13566)
This PR closes [Issue #13482](https://github.com/nushell/nushell/issues/13482) # Description This PR tend to make all math function to be constant. # User-Facing Changes The math commands now can be used as constant methods. ### Some Example ``` > const MODE = [3 3 9 12 12 15] | math mode > $MODE ╭───┬────╮ │ 0 │ 3 │ │ 1 │ 12 │ ╰───┴────╯ > const LOG = [16 8 4] | math log 2 > $LOG ╭───┬──────╮ │ 0 │ 4.00 │ │ 1 │ 3.00 │ │ 2 │ 2.00 │ ╰───┴──────╯ > const VAR = [1 3 5] | math variance > $VAR 2.6666666666666665 ``` # Tests + Formatting Tests are added for all of the math command to test there constant behavior. I mostly focused on the actual user experience, not the correctness of the methods and algorithms. # After Submitting I think this change don't require any additional documentation. Feel free to correct me in this topic please. |
||
|
7d4449f021 |
Added polars sink command, that performs and streaming collect to t… (#13562)
# Description This exposes the `LazyFrame::sink_*` functionality to allow a streaming collect directly to the filesystem. This useful when working with data that is too large to fit into memory. # User-Facing Changes - Introduction of the `polars sink` command |
||
|
ec3e0e593d |
polars first and polars last will now handle lazy frames natively (#13555)
# Description Prior this pull request `polars first` and `polars last` would collect a lazy frame into an eager frame before performing operations. Now `polars first` will to a `LazyFrame::limit` and `polars last` will perform a `LazyFrame::tail`. This is really useful in working with very large datasets. |
||
|
ff09c7964e |
polars open will now open a lazy frame by default (#13556)
# Description When opening a dataframe the default operation will be to create a lazy frame if possible. This works much better with large datasets and supports hive format. # User-Facing Changes - `--lazy` is nolonger a valid option. `--eager` must be used to explicitly open an eager dataframe. |
||
|
ce13ecfd10 |
Bump mockito from 1.4.0 to 1.5.0 (#13558)
Bumps [mockito](https://github.com/lipanski/mockito) from 1.4.0 to 1.5.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.5.0</h2> <ul> <li><strong>[Breaking]</strong> <a href="https://redirect.github.com/lipanski/mockito/pull/198">Upgrade</a> to hyper v1</li> </ul> <p>Thanks to <a href="https://github.com/tottoto"><code>@tottoto</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
c18e6bfca0 |
Add type signature example for def command (#13561)
# Description By popular demand (a.k.a. https://github.com/nushell/nushell.github.io/issues/1035), provide an example of a type signature in the `def` help. # User-Facing Changes Help/Doc # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib # After Submitting N/A |
||
|
bc6947cd09 |
Bump quick-xml from 0.31.0 to 0.32.0 (#13560)
Bumps [quick-xml](https://github.com/tafia/quick-xml) from 0.31.0 to 0.32.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tafia/quick-xml/releases">quick-xml's releases</a>.</em></p> <blockquote> <h2>v0.32.0</h2> <h2>Significant Changes</h2> <p>The method of reporting positions of errors has changed - use <code>error_position()</code> to get an offset of the error position. For <code>SyntaxError</code>s the range <code>error_position()..buffer_position()</code> also will represent a span of error.</p> <h3>⚠️ Breaking Changes</h3> <p>The way to configure parser has changed. Now all configuration is contained in the <code>Config</code> struct and can be applied at once. When <code>serde-types</code> feature is enabled, configuration is serializable.</p> <p>The way of resolve entities with <code>unescape_with</code> has changed. Those methods no longer resolve predefined entities (<code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>, <code>amp</code>). <code>NoEntityResolver</code> renamed to <code>PredefinedEntityResolver</code>.</p> <p><code>Writer::create_element</code> now accepts <code>impl Into<Cow<str>></code> instead of <code>&impl AsRef<str></code>.</p> <p>Minimum supported version of serde raised to 1.0.139</p> <p>The full changelog is below.</p> <h2>What's Changed</h2> <h3>New Features</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/513">#513</a>: Allow to continue parsing after getting new <code>Error::IllFormed</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/677">#677</a>: Added methods <code>config()</code> and <code>config_mut()</code> to inspect and change the parser configuration. Previous builder methods on <code>Reader</code> / <code>NsReader</code> was replaced by direct access to fields of config using <code>reader.config_mut().<...></code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Added a method <code>Config::enable_all_checks</code> to turn on or off all well-formedness checks.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>escape::minimal_escape()</code> which escapes only <code>&</code> and <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>BytesCData::minimal_escape()</code> which escapes only <code>&</code> and <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>Serializer::set_quote_level()</code> which allow to set desired level of escaping.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/705">#705</a>: Added <code>NsReader::prefixes()</code> to list all the prefixes currently declared.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/629">#629</a>: Added a default case to <code>impl_deserialize_for_internally_tagged_enum</code> macro so that it can handle every attribute that does not match existing cases within an enum variant.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/722">#722</a>: Allow to pass owned strings to <code>Writer::create_element</code>. This is breaking change!</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/275">#275</a>: Added <code>ElementWriter::new_line()</code> which enables pretty printing elements with multiple attributes.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/743">#743</a>: Added <code>Deserializer::get_ref()</code> to get XML Reader from serde Deserializer</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/734">#734</a>: Added helper functions to resolve predefined XML and HTML5 entities: <ul> <li><code>quick_xml::escape::resolve_predefined_entity</code></li> <li><code>quick_xml::escape::resolve_xml_entity</code></li> <li><code>quick_xml::escape::resolve_html5_entity</code></li> </ul> </li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/753">#753</a>: Added parser for processing instructions: <code>quick_xml::reader::PiParser</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/754">#754</a>: Added parser for elements: <code>quick_xml::reader::ElementParser</code>.</li> </ul> <h3>Bug Fixes</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/622">#622</a>: Fix wrong disregarding of not closed markup, such as lone <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Fix incorrect position reported for <code>Error::IllFormed(DoubleHyphenInComment)</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Fix incorrect position reported for <code>Error::IllFormed(MissingDoctypeName)</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/704">#704</a>: Fix empty tags with attributes not being expanded when <code>expand_empty_elements</code> is set to true.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/683">#683</a>: Use local tag name when check tag name against possible names for field.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/753">#753</a>: Correctly determine end of processing instructions and XML declaration.</li> </ul> <h3>Misc Changes</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/675">#675</a>: Minimum supported version of serde raised to 1.0.139</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/675">#675</a>: Rework the <code>quick_xml::Error</code> type to provide more accurate information:</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tafia/quick-xml/blob/master/Changelog.md">quick-xml's changelog</a>.</em></p> <blockquote> <h2>0.32.0 -- 2024-06-10</h2> <p>The way to configure parser is changed. Now all configuration is contained in the <code>Config</code> struct and can be applied at once. When <code>serde-types</code> feature is enabled, configuration is serializable.</p> <p>The method of reporting positions of errors has changed - use <code>error_position()</code> to get an offset of the error position. For <code>SyntaxError</code>s the range <code>error_position()..buffer_position()</code> also will represent a span of error.</p> <p>The way of resolve entities with <code>unescape_with</code> are changed. Those methods no longer resolve predefined entities.</p> <h3>New Features</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/513">#513</a>: Allow to continue parsing after getting new <code>Error::IllFormed</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/677">#677</a>: Added methods <code>config()</code> and <code>config_mut()</code> to inspect and change the parser configuration. Previous builder methods on <code>Reader</code> / <code>NsReader</code> was replaced by direct access to fields of config using <code>reader.config_mut().<...></code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Added a method <code>Config::enable_all_checks</code> to turn on or off all well-formedness checks.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>escape::minimal_escape()</code> which escapes only <code>&</code> and <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>BytesCData::minimal_escape()</code> which escapes only <code>&</code> and <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/362">#362</a>: Added <code>Serializer::set_quote_level()</code> which allow to set desired level of escaping.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/705">#705</a>: Added <code>NsReader::prefixes()</code> to list all the prefixes currently declared.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/629">#629</a>: Added a default case to <code>impl_deserialize_for_internally_tagged_enum</code> macro so that it can handle every attribute that does not match existing cases within an enum variant.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/722">#722</a>: Allow to pass owned strings to <code>Writer::create_element</code>. This is breaking change!</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/275">#275</a>: Added <code>ElementWriter::new_line()</code> which enables pretty printing elements with multiple attributes.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/743">#743</a>: Added <code>Deserializer::get_ref()</code> to get XML Reader from serde Deserializer</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/734">#734</a>: Added helper functions to resolve predefined XML and HTML5 entities: <ul> <li><code>quick_xml::escape::resolve_predefined_entity</code></li> <li><code>quick_xml::escape::resolve_xml_entity</code></li> <li><code>quick_xml::escape::resolve_html5_entity</code></li> </ul> </li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/753">#753</a>: Added parser for processing instructions: <code>quick_xml::reader::PiParser</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/754">#754</a>: Added parser for elements: <code>quick_xml::reader::ElementParser</code>.</li> </ul> <h3>Bug Fixes</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/622">#622</a>: Fix wrong disregarding of not closed markup, such as lone <code><</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Fix incorrect position reported for <code>Error::IllFormed(DoubleHyphenInComment)</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/684">#684</a>: Fix incorrect position reported for <code>Error::IllFormed(MissingDoctypeName)</code>.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/704">#704</a>: Fix empty tags with attributes not being expanded when <code>expand_empty_elements</code> is set to true.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/683">#683</a>: Use local tag name when check tag name against possible names for field.</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/753">#753</a>: Correctly determine end of processing instructions and XML declaration.</li> </ul> <h3>Misc Changes</h3> <ul> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/675">#675</a>: Minimum supported version of serde raised to 1.0.139</li> <li><a href="https://redirect.github.com/tafia/quick-xml/issues/675">#675</a>: Rework the <code>quick_xml::Error</code> type to provide more accurate information:</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
faaa12838e |
Bump scraper from 0.19.0 to 0.20.0 (#13559)
Bumps [scraper](https://github.com/causal-agent/scraper) from 0.19.0 to 0.20.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.20.0</h2> <h2>What's Changed</h2> <ul> <li><code>is</code> and <code>has</code> support by <a href="https://github.com/cfvescovo"><code>@cfvescovo</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/187">causal-agent/scraper#187</a></li> <li>Make ElementRef Debug impl use Element by <a href="https://github.com/gfaster"><code>@gfaster</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/190">causal-agent/scraper#190</a></li> <li>Bump indexmap from 2.2.6 to 2.3.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/194">causal-agent/scraper#194</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/gfaster"><code>@gfaster</code></a> made their first contribution in <a href="https://redirect.github.com/causal-agent/scraper/pull/190">causal-agent/scraper#190</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/causal-agent/scraper/compare/v0.19.1...v0.20.0">https://github.com/causal-agent/scraper/compare/v0.19.1...v0.20.0</a></p> <h2>0.19.1</h2> <h2>What's Changed</h2> <ul> <li>Bump ahash from 0.8.9 to 0.8.11 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/174">causal-agent/scraper#174</a></li> <li>Bump indexmap from 2.2.3 to 2.2.5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/173">causal-agent/scraper#173</a></li> <li>Bump html5ever from 0.26.0 to 0.27.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/176">causal-agent/scraper#176</a></li> <li>Bump indexmap from 2.2.5 to 2.2.6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/177">causal-agent/scraper#177</a></li> <li>Select and Text are not fused iterators by <a href="https://github.com/Noname-Official"><code>@Noname-Official</code></a> in <a href="https://redirect.github.com/causal-agent/scraper/pull/184">causal-agent/scraper#184</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Noname-Official"><code>@Noname-Official</code></a> made their first contribution in <a href="https://redirect.github.com/causal-agent/scraper/pull/184">causal-agent/scraper#184</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/causal-agent/scraper/compare/v0.19.0...v0.19.1">https://github.com/causal-agent/scraper/compare/v0.19.0...v0.19.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
edee2a3c15 |
Bump indexmap from 2.2.6 to 2.3.0 (#13557)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.2.6 to 2.3.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md">indexmap's changelog</a>.</em></p> <blockquote> <h2>2.3.0</h2> <ul> <li>Added trait <code>MutableEntryKey</code> for opt-in mutable access to map entry keys.</li> <li>Added method <code>MutableKeys::iter_mut2</code> for opt-in mutable iteration of map keys and values.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
2ced9e4d19 |
Add multipart/form-data uploads (#13532)
Fixes nushell/nushell#11046 # Description This adds support for `multipart/form-data` (RFC 7578) uploads to nushell. Binary data is uploaded as files (`application/octet-stream`), everything else is uploaded as plain text. ```console $ http post https://echo.free.beeceptor.com --content-type multipart/form-data {cargo: (open -r Cargo.toml | into binary ), description: "It's some TOML"} | upsert ip "<redacted>" ╭───────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ method │ POST │ │ protocol │ https │ │ host │ echo.free.beeceptor.com │ │ path │ / │ │ ip │ <redacted> │ │ │ ╭─────────────────┬────────────────────────────────────────────────────────────────────╮ │ │ headers │ │ Host │ echo.free.beeceptor.com │ │ │ │ │ User-Agent │ nushell │ │ │ │ │ Content-Length │ 9453 │ │ │ │ │ Accept │ */* │ │ │ │ │ Accept-Encoding │ gzip │ │ │ │ │ Content-Type │ multipart/form-data; boundary=a15f6a14-5768-4a6a-b3a4-686a112d9e27 │ │ │ │ ╰─────────────────┴────────────────────────────────────────────────────────────────────╯ │ │ parsedQueryParams │ {record 0 fields} │ │ │ ╭─────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ parsedBody │ │ │ ╭─────────────┬────────────────╮ │ │ │ │ │ textFields │ │ description │ It's some TOML │ │ │ │ │ │ │ ╰─────────────┴────────────────╯ │ │ │ │ │ │ ╭───┬───────┬──────────┬──────────────────────────┬───────────────────────────┬───────────────────────────────────────────┬────────────────╮ │ │ │ │ │ files │ │ # │ name │ fileName │ Content-Type │ Content-Transfer-Encoding │ Content-Disposition │ Content-Length │ │ │ │ │ │ │ ├───┼───────┼──────────┼──────────────────────────┼───────────────────────────┼───────────────────────────────────────────┼────────────────┤ │ │ │ │ │ │ │ 0 │ cargo │ cargo │ application/octet-stream │ binary │ form-data; name="cargo"; filename="cargo" │ 9101 │ │ │ │ │ │ │ ╰───┴───────┴──────────┴──────────────────────────┴───────────────────────────┴───────────────────────────────────────────┴────────────────╯ │ │ │ │ ╰─────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰───────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ``` # User-Facing Changes `http post --content-type multipart/form-data` now accepts a record which is uploaded as `multipart/form-data`. Binary data is uploaded as files (`application/octet-stream`), everything else is uploaded as plain text. Previously `http post --content-type multipart/form-data` rejected records, so there's no BC break. # Tests + Formatting Added. # After Submitting - [ ] update docs to showcase new functionality |
||
|
926331dbfb |
chore: Add nu_plugin_polars to build and install scripts (#13550)
- Add `nu_plugin_polars` to the list of plugins in `build-all-maclin.sh`. - Add `nu_plugin_polars` to the list of plugins in `build-all.nu`. - Add `nu_plugin_polars` to the list of plugins in `install-all.ps1`. - Add `nu_plugin_polars` to the list of plugins in `install-all.sh`. - Add `nu_plugin_polars` to the list of plugins in `uninstall-all.sh`. <!-- 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. --> # 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. --> |
||
|
eca2975b3d |
Fix a typo in an example (#13548)
Accidentally used the old name of the command, `random bytes`, instead of the correct one. Co-authored-by: Andrej Kolčin <self@kaathewise.net> |
||
|
1cd0544a3f |
fix: relay Signals reset to plugins (#13510)
This PR will close #13501 # Description This PR expands on [the relay of signals to running plugin processes](https://github.com/nushell/nushell/pull/13181). The Ctrlc relay has been generalized to SignalAction::Interrupt and when reset_signal is called on the main EngineState, a SignalAction::Reset is now relayed to running plugins. # User-Facing Changes The signal handler closure now takes a `signals::SignalAction`, while previously it took no arguments. The handler will now be called on both interrupt and reset. The method to register a handler on the plugin side is now called `register_signal_handler` instead of `register_ctrlc_handler` [example](https://github.com/nushell/nushell/pull/13510/files#diff-3e04dff88fd0780a49778a3d1eede092ec729a1264b4ef07ca0d2baa859dad05L38). This will only affect plugin authors who have started making use of https://github.com/nushell/nushell/pull/13181, which isn't currently part of an official release. The change will also require all of user's plugins to be recompiled in order that they don't error when a signal is received on the PluginInterface. # Testing ``` : example ctrlc interrupt status: false waiting for interrupt signal... ^Cinterrupt status: true peace. Error: × Operation interrupted ╭─[display_output hook:1:1] 1 │ if (term size).columns >= 100 { table -e } else { table } · ─┬ · ╰── This operation was interrupted ╰──── : example ctrlc interrupt status: false <-- NOTE status is false waiting for interrupt signal... ^Cinterrupt status: true peace. Error: × Operation interrupted ╭─[display_output hook:1:1] 1 │ if (term size).columns >= 100 { table -e } else { table } · ─┬ · ╰── This operation was interrupted ╰──── ``` |
||
|
73e8de9753 |
Attempt to guess the content type of a file when opening with --raw (#13521)
# Description Attempt to guess the content type of a file when opening with --raw and set it in the pipeline metadata. <img width="644" alt="Screenshot 2024-08-02 at 11 30 10" src="https://github.com/user-attachments/assets/071f0967-c4dd-405a-b8c8-f7aa073efa98"> # User-Facing Changes - Content of files can be directly piped into commands like `http post` with the content type set appropriately when using `--raw`. |
||
|
4e83ccdf86 |
Allow int input when using a formatstring in into datetime (#13541)
# Description When using a format string, `into datetime` would disallow an `int` even when it logically made sense. This was mainly a problem when attempting to convert a Unix epoch to Nushell `datetime`. Unix epochs are often stored or returned as `int` in external data sources. ```nu 1722821463 | into datetime -f '%s' Error: nu:🐚:only_supports_this_input_type × Input type not supported. ╭─[entry #3:1:1] 1 │ 1722821463 | into datetime -f '%s' · ─────┬──── ──────┬────── · │ ╰── only string input data is supported · ╰── input type: int ╰──── ``` While the solution was simply to `| to text` the `int`, this PR handles the use-case automatically. Essentially a ~5 line change that just moves the current parsing to a closure that is called for both Strings and Ints-converted-to-Strings. # User-Facing Changes After the change: ```nu [ 1722821463 "1722821463" 0 ] | each { into datetime -f '%s' } ╭───┬──────────────╮ │ 0 │ 10 hours ago │ │ 1 │ 10 hours ago │ │ 2 │ 54 years ago │ ╰───┴──────────────╯ ``` # Tests + Formatting Test case added. - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting |
||
|
6d36941e55 | Add completions.sort option (#13311) | ||
|
2f44801414 |
Adding plist support (#13545)
# Description Provides the ability convert from and to plist format. <img width="1250" alt="Screenshot 2024-08-05 at 10 21 26" src="https://github.com/user-attachments/assets/970f3366-eb70-4d74-a396-649374556f66"> <img width="730" alt="Screenshot 2024-08-05 at 10 22 38" src="https://github.com/user-attachments/assets/6ec317d0-686e-47c6-bf35-8ab6e5d802db"> # User-Facing Changes - Introduction of `from plist` command - Introduction of `to plist`command --------- Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com> |
||
|
9172b22985 |
Rework help generation internals (#13531)
Reworking some of the sprawling code we use to generate the `help cmd` or `cmd --help` output. This touches mainly the rendering and not the gathering of the necessary data (see open bugs under [label:help-system](https://github.com/nushell/nushell/issues?q=sort%3Aupdated-desc+is%3Aopen+label%3Ahelp-system)) Fixes #9076 Fixes the syntax shape output on flags to be consistent. ## Example ```nushell def test [ positional: int, documented: float, # this has documentation default = 50, optional?, --a = "bla", --bla (-b) = "bla", # named with default ] {} ``` ### before  ### after  |
||
|
1c37f4b958 |
Create random binary command (#13542)
# Description/User-Facing Changes Creates a new `random binary <LENGTH>` command, which returns random bytes. Resolve #13500 |
||
|
56ed532038 |
update to latest reedline commit 919292e (#13540)
# Description This PR updates nushell to the latest reedline commit which has some vi keyboard mode changes. # 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. --> |
||
|
b974f8f7e3 |
Include empty table data cells in query web tables (#13538)
# Description Empty cells were being skipped, causing data to appear in the wrong columns. By including the cells, data should appear in the correct columns now. Fixes #10194. Before: ``` $ [[a b c]; [1 null 3] [4 5 6]] | to html --partial | query web --as-table [a b c] ╭───┬───┬───┬─────────────────────╮ │ # │ a │ b │ c │ ├───┼───┼───┼─────────────────────┤ │ 0 │ 1 │ 3 │ Missing column: 'c' │ │ 1 │ 4 │ 5 │ 6 │ ╰───┴───┴───┴─────────────────────╯ ``` After: ``` $ [[a b c]; [1 null 3] [4 5 6]] | to html --partial | query web --as-table [a b c] ╭───┬───┬───┬───╮ │ # │ a │ b │ c │ ├───┼───┼───┼───┤ │ 0 │ 1 │ │ 3 │ │ 1 │ 4 │ 5 │ 6 │ ╰───┴───┴───┴───╯ ``` Co-authored-by: James Chen-Smith <jameschensmith@gmail.com> |
||
|
802bfed173 |
feat: prefer exact match when completion mode is prefix (#13302)
<!-- 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! --> Fixes #13204 # 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. --> When the completion mode is set to `prefix`, path completions explicitly check for and prefer an exact match for a basename instead of longer or similar names. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> Exact match is inactive since there's no trailing slash ``` ~/Public/nushell| ls crates/nu-plugin<tab> crates/nu-plugin/ crates/nu-plugin-core/ crates/nu-plugin-engine/ crates/nu-plugin-protocol/ crates/nu-plugin-test-support/ ``` Exact match is active ``` ~/Public/nushell| ls crates/nu-plugin/<tab> crates/nu-plugin/Cargo.toml crates/nu-plugin/LICENSE crates/nu-plugin/README.md crates/nu-plugin/src/ ``` Fuzzy matching persists its behavior ``` ~/Public/nushell> $env.config.completions.algorithm = "fuzzy"; ~/Public/nushell| ls crates/nu-plugin/car crates/nu-cmd-plugin/Cargo.toml crates/nu-plugin/Cargo.toml crates/nu-plugin-core/Cargo.toml crates/nu-plugin-engine/Cargo.toml crates/nu-plugin-protocol/Cargo.toml crates/nu-plugin-test-support/Cargo.toml ``` # 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. --> |
||
|
07e7c8c81f |
Fixup #13526 width flag for example (#13529)
# Description This seems to be a minor copy paste mistake. cc @Embers-of-the-Fire Followup to #13526 # User-Facing Changes (-) # Tests + Formatting (-) |
||
|
20b53067cd |
Fix overflow table display in command documentation (#13526)
# Description Check and set table width beforehand. Closes #13520. # User-Facing Changes Before: ```plain ❯ help net cmd1 network Usage: > net cmd1 Flags: -h, --help - Display the help message for this command Input/output types: ╭───┬─────────┬─────────────────────────────────────────────────────────╮ │ # │ input │ output │ ├───┼─────────┼─────────────────────────────────────────────────────────┤ │ 0 │ nothing │ table<name: string, description: string, mac: string, │ │ │ │ ips: table<type: string, addr: string, prefix: int>, │ │ │ │ flags: record<is_up: bool, is_broadcast: bool, │ │ │ │ is_loopback: bool, is_point_to_point: bool, │ │ │ │ is_multicast: bool>> │ ╰───┴─────────┴─────────────────────────────────────────────────────────╯ ``` After: ```plain ❯ help net cmd1 network Usage: > net cmd1 Flags: -h, --help - Display the help message for this command Input/output types: ╭───┬─────────┬───────────────────────────────────────────────────────╮ │ # │ input │ output │ ├───┼─────────┼───────────────────────────────────────────────────────┤ │ 0 │ nothing │ table<name: string, description: string, mac: string, │ │ │ │ ips: table<type: string, addr: string, prefix: int>, │ │ │ │ flags: record<is_up: bool, is_broadcast: bool, │ │ │ │ is_loopback: bool, is_point_to_point: bool, │ │ │ │ is_multicast: bool>> │ ╰───┴─────────┴───────────────────────────────────────────────────────╯ ``` # Tests + Formatting - [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 toolkit.nu; toolkit test stdlib"` to run the tests for the standard library # After Submitting - [x] Bug fix, no doc update. |
||
|
f4c0d9d45b |
Path migration part 4: various tests (#13373)
# Description Part 4 of replacing std::path types with nu_path types added in https://github.com/nushell/nushell/pull/13115. This PR migrates various tests throughout the code base. |
||
|
85b06b22d9 |
Replace manual Record::get implementation (#13525)
Let's simplify here |
||
|
63f00e78d1 |
Lift SharedCow::to_mut out of if let branches (#13524)
In some `if let`s we ran the `SharedCow::to_mut` for the test and to get access to a mutable reference in the happy path. Internally `Arc::into_mut` has to read atomics and if necessary clone. For else branches, where we still want to modify the record we previously called this again (not just in rust, confirmed in the asm). This would have introduced a `call` instruction and its cost (even if it would be guaranteed to take the short path in `Arc::into_mut`). Lifting it get's rid of this. |
||
|
ff1ad77130 |
Simplify column look-up in default (#13522)
# Description Since we make the promise that record keys/columns are exclusice we don't have to go through all columns after we have found the first one. Should permit some short-circuiting if the column is found early. # User-Facing Changes (-) # Tests + Formatting (-) |
||
|
af34d5c062 |
Fix internal panic for query web (#13507)
<!-- 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. --> Original implementation contains multiple `expect` which can cause internal runtime panic. This pr forks the `css` selector impl and make it return an error that nushell can recognize. **Note:** The original impl is still used in pre-defined selector implementations, but they should never fail, so the `css` fn is preserved. Closes #13496. # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> Now `query web` will not panic when the `query` parameter is not given or has syntax error. ```plain ❯ .\target\debug\nu.exe -c "http get https://www.rust-lang.org | query web" Error: × CSS query parse error ╭─[source:1:38] 1 │ http get https://www.rust-lang.org | query web · ────┬──── · ╰─┤ Unexpected error occurred. Please report this to the developer · │ EmptySelector ╰──── help: cannot parse query as a valid CSS selector ``` # 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 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. --> - [x] Impl change, no doc update. --------- Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com> |
||
|
ed82f9ee18 |
Clarify default command help (#13519)
# Description Updates `default` command description to be more clear and adds an example for a missing values in a list-of-records. # User-Facing Changes Help/doc only # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting - Update `nothing` doc in Book to reference `default` per https://github.com/nushell/nushell.github.io/issues/1073 - This was a bit of a rabbit trail on the path to that update. ;-) --------- Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com> |
||
|
d081e3386f |
Make pipeline metadata available to plugins (#13495)
# Description Fixes an issue with pipeline metadata not being passed to plugins. |