Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from nushell:main #512

Merged
merged 10 commits into from
Oct 22, 2024
Merged

[pull] main from nushell:main #512

merged 10 commits into from
Oct 22, 2024

Commits on Oct 21, 2024

  1. add start_time to ps -l on macos (#14127)

    # Description
    
    This PR adds `start_time` to the MacOS `ps -l` command. Was requested in
    discord. `start_time` is displayed in `Local` time.
    
    
    ![image](https://github.com/user-attachments/assets/b3743cde-af43-4756-9e2a-54689104fb25)
    
    
    # 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.
    -->
    
    /cc @cablehead
    fdncred authored Oct 21, 2024
    Configuration menu
    Copy the full SHA
    09ab583 View commit details
    Browse the repository at this point in the history
  2. try and fix osc633 escaping yet again (#14140)

    # Description
    
    This PR is meant to fix the escaping in the osc633 implementation from
    [PR 14008](#14008) that is
    specifically for vscode. The idea is to try and follow these rules
    better.
    https://code.visualstudio.com/docs/terminal/shell-integration#_vs-code-custom-sequences-osc-633-st
    
    Previously, it wouldn't escape all the characters and would only escape
    characters while typing escape characters. Now it should take what was
    typed and escape it if necessary.
    fdncred authored Oct 21, 2024
    Configuration menu
    Copy the full SHA
    1dbd431 View commit details
    Browse the repository at this point in the history
  3. Make contributor image wider (#14138)

    With this many contributors you otherwise have to scroll really far to
    get down to the license info.
    
    The alternative would be to limit the number of faces we show, but it is
    cool to have them all (as long as the generated svg doesn't take too
    long to load or generate)
    sholderbach authored Oct 21, 2024
    Configuration menu
    Copy the full SHA
    ee97c00 View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2024

  1. fix error when exporting consts with type signatures in modules (#14118)

    Fixes #14023
    
    # Description
    
    - Prevents "failed to find added variable" when modules export constants
      with type signatures:
    
    ```nushell
    > module foo { export const bar: int = 2 }
    Error: nu::parser::unknown_state
    
      × Internal error.
       ╭─[entry #1:1:21]
     1 │ module foo { export const bar: int = 2 }
       ·                     ─────────┬────────
       ·                              ╰── failed to find added variable
    ```
    
    - Returns `name_is_builtin_var` errors for names with type signatures:
    
    ```nushell
    > let env: string = "";
    Error: nu::parser::name_is_builtin_var
    
      × `env` used as variable name.
       ╭─[entry #1:1:5]
     1 │ let env: string = "";
       ·     ─┬─
       ·      ╰── already a builtin variable
    ```
    sgvictorino authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    4968b6b View commit details
    Browse the repository at this point in the history
  2. Fix range contains (#14011)

    # Description
    
    This PR changes the range contains logic to take the step into account. 
    
    ```nushell
    # before
    2 in 1..3.. # true
    
    # now
    2 in 1..3.. # false
    ```
    
    ---
    
    I encountered another issue while adding tests. Due to floating point
    precision, `2.1 in 1..1.1..3` will return `false`. The floating point
    error is even bigger than `f64::EPSILON` (`0.09999999999999876` vs
    `2.220446049250313e-16`). This issue disappears with bigger numbers.
    
    I tried a different algorithm (checking if the estimated number of steps
    is close enough to any integer) but the results are still pretty bad:
    
    ```rust
    let n_steps = (value - self.start) / self.step; // 14.999999999999988
    (n_steps - n_steps.round()).abs() < f64::EPSILON // returns false
    ```
    
    Maybe it can be shipped like this, the REPL already has floating point
    errors (`1.1 - 1` returns `0.10000000000000009`). Or maybe there's a way
    to fix this that I didn't think of. I'm open to ideas! But in any case
    performing this kind of checks on a range of floats seems more niche
    than doing it on a range of ints.
    
    # User-Facing Changes
    
    Code that depended on this behavior to check if a number is between
    `start` and `end` will potentially return a different value.
    
    # Tests + Formatting
    
    # After Submitting
    JoaquinTrinanes authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    f738932 View commit details
    Browse the repository at this point in the history
  3. Fix panic if tokens are placed after a redirection (#14035)

    <!--
    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
    
    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 #13835
    
    The `concat` function from `span.rs` assumes that two consecutive span
    intervals must overlap. But when parsing `let` and `mut` expressions, we
    call `parts_including_redirection` which chains two slices of span and
    leads to the above condition not holding. So my solution here is to sort
    them after chaining.
    
    
    # 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.
    -->
    Kither12 authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    f3a1dfe View commit details
    Browse the repository at this point in the history
  4. Feature url build_query accepts records with lists of strings (#14073)

    <!--
    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.
    -->
    
    Swagger supports lists (a.k.a arrays) in query parameters:
    
    https://swagger.io/docs/specification/v3_0/serialization/
    It supports three different styles:
    - explode=true
    - spaceDelimited
    - pipeDelimited
    With explode=true being the default and hence most common. It is the
    hardest to use inside of nushell, as the others are just a `string join`
    away. This commit adds lists with the explode=true format.
    
    # User-Facing Changes
    <!-- List of all changes that impact the user experience here. This
    helps us keep track of breaking changes. -->
    
    Before:
    
    : {a[]: [one two three], b: four} | url build-query
    Error: nu::shell::unsupported_input
    × Unsupported input
    ╭─[entry #33:1:1]
    1 │ {a[]: [one two three], b: four} | url build-query
    · ───────────────┬─────────────── ───────┬───────
    · │ ╰── Expected a record with string values
    · ╰── value originates from here
           ╰────
    
    After:
    
    : {a[]: [one two three], b: four} | url build-query
        a%5B%5D=one&a%5B%5D=two&a%5B%5D=three&b=four
    
    
    Despite reading CONTRIBUTING.md I didn't get approval before making the
    change. My judgment is that this doesn't qualify as being "change
    something significantly".
    
    # Tests + Formatting
    
    I added the Example instance for the automatic tests. I couldn't figure
    out how to add an Example for the error case, so I did that with manual
    testing. E.g.:
    
    : {a[]: [one two [three]], b: four} | url build-query
    
    Error: nu:🐚:unsupported_input
    
    
    × Unsupported input
    
    ╭─[entry #3:1:1]
    
    1 │ {a[]: [one two [three]], b: four} | url build-query
    
    · ────────────────┬──────────────── ───────┬───────
    
    · │ ╰── Expected a record with list of string values
    
    · ╰── value originates from here
    
           ╰────
    
    : {a[]: [one two 3hr], b: four} | url build-query
    
    Error: nu:🐚:unsupported_input
    
    
    × Unsupported input
    
    ╭─[entry #4:1:1]
    
    1 │ {a[]: [one two 3hr], b: four} | url build-query
    
    · ──────────────┬────────────── ───────┬───────
    
    · │ ╰── Expected a record with list of string values
    
    · ╰── value originates from here
    
           ╰──── 
    <!--
    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
    > ```
    -->
    
    I ran the four cargo commands on my local machine. I had to run the
    tests with:
    
    LANG=C and -j 1 and even then I got one failure:
    
    thread 'commands::umkdir::mkdir_umask_permission' panicked at
    crates/nu-command/tests/commands/umkdir.rs:148:9:
    assertion `left == right` failed: Most *nix systems have 0o00022 as the
    umask. So directory permission should be 0o40755 = 0o
    40777 & (!0o00022)
    left: 16893
        right: 16877
    
    but this isn't related to this change (I seem to not be running most
    *nix system; and don't have a lot of RAM for the number of cores). The
    other three cargo commands didn't have errors or warnings.
    
    # 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.
    -->
    
    I will add the new example to [the
    documentation](https://github.com/nushell/nushell.github.io).
    
    # Open questions / possible future work
    
    Things I noticed, and would like to mention and am open to adding, but
    don't think I am deep enough in nushell to do them pro-actively.
    
    ## Add an argument for the other query parameter list styles
    
    I don't know how frequent they are and I currently don't need them, so
    following KISS I didn't add them.
    
    ## long input_span marked
    
    In e.g.:
    
    : {a[]: [one two 3hr], b: four} | url build-query
    
    Error: nu::shell::unsupported_input
    
    
    × Unsupported input
    
    ╭─[entry #4:1:1]
    
    1 │ {a[]: [one two 3hr], b: four} | url build-query
    
    · ──────────────┬────────────── ───────┬───────
    
    · │ ╰── Expected a record with list of string values
    
    · ╰── value originates from here
    
           ╰──── 
    
    the entire record is marked as input_span instead of just the "3hr" that
    is causing the problem. Changing that would be trivial, but I'm not deep
    enough into nushell to understand all the consequences of changing that.
    
    
    ## Error message says string values despite accepting numbers etc.
    
    The error message said it only accepted strings despite accepting
    numbers etc. (anything it can coerce into string). I couldn't find a
    good wording myself and that was how it was before. I simply added a
    "list of strings".
    adaschma authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    04fed82 View commit details
    Browse the repository at this point in the history
  5. error when closure param lists aren't terminated by | (#14095)

    Fixes #13757, fixes #9562
    
    # User-Facing Changes
    
    - `unclosed |` is returned for malformed closure parameters:
    
    ```
    { |a }
    ```
    
    - Parameter list closing pipes are highlighted as part of the closure
    sgvictorino authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    3f75b6b View commit details
    Browse the repository at this point in the history
  6. Defensive handling of errors when transposing (#14096)

    # Description
    This PR aims to close #14027, in which it was noticed that the transpose
    command "swallows" error messages.
    
    *Note that in exploring the linked issue, [other situations were
    identified](#14027 (comment))
    which also produce inconsistent behaviour. These have knowingly been
    omitted from this PR, to minimize its scope, and since they seem to have
    a different cause. It's probably best to make a separate issue/PR in
    which to tackle a broader scan of error handling, with a suspected
    relation to streams.*
    
    # User-Facing Changes
    The user will see errors from deeper in the pipeline, in case the errors
    originated there.
    
    # Tests + Formatting
    Toolkit PR check was run successfully.
    
    One test was added, covering this exact situation, in order to prevent
    regressions.
    The bug is relatively obscure, so it may be prone to reappear during
    refactorings.
    PhotonBursted authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    9870c7c View commit details
    Browse the repository at this point in the history
  7. update to reedline commit 9cb1128 (#14146)

    # Description
    
    Update to the latest reedline commit.
    
    # 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.
    -->
    fdncred authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    e05f387 View commit details
    Browse the repository at this point in the history