Skip to content

Conversation

dependabot[bot]
Copy link

@dependabot dependabot bot commented on behalf of github Apr 5, 2024

Bumps the cargo group with 7 updates in the / directory:

Package From To
time 0.3.21 0.3.34
openssl 0.10.52 0.10.60
h2 0.3.19 0.3.26
libgit2-sys 0.15.1+1.6.4 0.15.2+1.6.4
rustix 0.36.14 0.36.17
shlex 1.1.0 1.3.0
unsafe-libyaml 0.2.8 0.2.11

Updates time from 0.3.21 to 0.3.34

Release notes

Sourced from time's releases.

v0.3.34

See the changelog for details.

v0.3.33

See the changelog for details.

v0.3.32

See the changelog for details.

v0.3.31

See the changelog for details.

v0.3.30

See the changelog for details.

v0.3.29

See the changelog for details.

v0.3.28

See the changelog for details.

v0.3.27

See the changelog for details.

v0.3.26

See the changelog for details.

v0.3.25

See the changelog for details.

v0.3.24

See the changelog for details.

v0.3.23

See the changelog for details.

v0.3.22

See the changelog for details.

Changelog

Sourced from time's changelog.

0.3.34 [2024-12-03]

Fixed

Computing the local offset on Windows works again. It was broken in some cases in v0.3.32 and v0.3.33.

0.3.33 [2024-02-03]

Fixed

Builds targeting wasm32-unknown-unknown now work again.

0.3.32 [2024-02-01]

Added

  • Methods to replace the day of the year.
    • Date::replace_ordinal
    • PrimitiveDateTime::replace_ordinal
    • OffsetDateTime::replace_ordinal
  • Modules to treat an OffsetDateTime as a Unix timestamp with subsecond precision for serde.
    • time::serde::timestamp::milliseconds
    • time::serde::timestamp::microseconds
    • time::serde::timestamp::nanoseconds

Changed

  • Duration::time_fn is deprecated.

0.3.31 [2023-12-19]

Added

  • OffsetDateTime::new_in_offset
  • OffsetDateTime::new_utc

Changed

  • The valid range of UtcOffset has been expanded from ±23:59:59 to ±25:59:59. This is to support the full POSIX range while permitting infallible negation.

0.3.30 [2023-10-13]

Added

  • powerfmt::smart_display::SmartDisplay has been added for the main types in the library. These implementations ensure that values follow the requested fill, width, and alignment when using format! or similar macros. Display is implemented in terms of SmartDisplay.

... (truncated)

Commits
  • f11f9b2 v0.3.34 release
  • ef7bfbd fix unsigned to signed conversion bug (#656)
  • 76468cb v0.3.33 release
  • 6c2b602 Fix wasm32-unknown-unknown build (#655)
  • ff3255f v0.3.32 release
  • d3dd5c9 Deprecate Duration::time_fn
  • 8a0dc70 Remove markdown files in favor of org-wide config
  • 980878b Build docs using org-wide workflow, change audit
  • 4baf6b3 Remove documentation of deprecated feature flag
  • be932d8 Adds support to serialize and deserialize timestamps with different resolutio...
  • Additional commits viewable in compare view

Updates openssl from 0.10.52 to 0.10.60

Release notes

Sourced from openssl's releases.

openssl-v0.10.60

What's Changed

Full Changelog: sfackler/rust-openssl@openssl-v0.10.59...openssl-v0.10.60

openssl-v0.10.59

What's Changed

New Contributors

Full Changelog: sfackler/rust-openssl@openssl-v0.10.58...openssl-v0.10.59

openssl-v0.10.58

What's Changed

... (truncated)

Commits
  • 8f4b97a Merge pull request #2104 from alex/bump-for-release
  • df66283 Release openssl v0.10.60 and openssl-sys v0.9.96
  • 1a09dc8 Merge pull request #2102 from sfackler/ex-leak
  • b0a1da5 Merge branch 'master' into ex-leak
  • f456b60 Merge pull request #2099 from alex/deprecate-store-ref-objects
  • a8413b8 Merge pull request #2100 from alex/symm-update-unchecked
  • a92c237 clippy
  • e839496 Don't leak when overwriting ex data
  • 602d38d Added update_unchecked to symm::Crypter
  • cf9681a fixes #2096 -- deprecate X509StoreRef::objects, it is unsound
  • Additional commits viewable in compare view

Updates h2 from 0.3.19 to 0.3.26

Release notes

Sourced from h2's releases.

v0.3.26

What's Changed

  • Limit number of CONTINUATION frames for misbehaving connections.

See https://seanmonstar.com/blog/hyper-http2-continuation-flood/ for more info.

v0.3.25

What's Changed

Full Changelog: hyperium/h2@v0.3.24...v0.3.25

v0.3.24

Fixed

  • Limit error resets for misbehaving connections.

v0.3.23

What's Changed

v0.3.22

What's Changed

  • Add header_table_size(usize) option to client and server builders.
  • Improve throughput when vectored IO is not available.
  • Update indexmap to 2.

New Contributors

v0.3.21

What's Changed

  • Fix opening of new streams over peer's max concurrent limit.
  • Fix RecvStream to return data even if it has received a CANCEL stream error.
  • Update MSRV to 1.63.

New Contributors

v0.3.20

Bug Fixes

... (truncated)

Changelog

Sourced from h2's changelog.

0.3.26 (April 3, 2024)

  • Limit number of CONTINUATION frames for misbehaving connections.

0.3.25 (March 15, 2024)

  • Improve performance decoding many headers.

0.3.24 (January 17, 2024)

  • Limit error resets for misbehaving connections.

0.3.23 (January 10, 2024)

  • Backport fix from 0.4.1 for stream capacity assignment.

0.3.22 (November 15, 2023)

  • Add header_table_size(usize) option to client and server builders.
  • Improve throughput when vectored IO is not available.
  • Update indexmap to 2.

0.3.21 (August 21, 2023)

  • Fix opening of new streams over peer's max concurrent limit.
  • Fix RecvStream to return data even if it has received a CANCEL stream error.
  • Update MSRV to 1.63.

0.3.20 (June 26, 2023)

  • Fix panic if a server received a request with a :status pseudo header in the 1xx range.
  • Fix panic if a reset stream had pending push promises that were more than allowed.
  • Fix potential flow control overflow by subtraction, instead returning a connection error.
Commits

Updates libgit2-sys from 0.15.1+1.6.4 to 0.15.2+1.6.4

Commits

Updates rustix from 0.36.14 to 0.36.17

Commits
  • 76c998c chore: Release rustix version 0.36.17
  • 1c6013a Fix p{read,write}v{,v2}'s encoding of the offset argument on Linux. (#896) (#...
  • 6534992 chore: Release rustix version 0.36.16
  • 4928cf7 Disable riscv64 testing.
  • 8cc159c Fix the test_ttyname_ok test when /dev/stdin is inaccessable. (#821)
  • 6dc7ba9 Downgrade dependencies and disable tests to compile under Rust 1.48.
  • ded8986 Disable MIPS in CI. (#793)
  • 739f9c3 Fixes for Dir on macOS, FreeBSD, and WASI.
  • 87481a9 Merge pull request from GHSA-c827-hfw6-qwvm
  • 5b764b5 chore: Release rustix version 0.36.15
  • Additional commits viewable in compare view

Updates shlex from 1.1.0 to 1.3.0

Changelog

Sourced from shlex's changelog.

1.3.0

  • Full fix for the high-severity security vulnerability RUSTSEC-2024-0006 a.k.a. GHSA-r7qv-8r2h-pg27:
    • Deprecates quote APIs in favor of try_ equivalents that complain about nul bytes.
    • Also adds a builder API, which allows re-enabling nul bytes without using the deprecated interface, and in the future can allow other things (as discussed in quoting_warning).
    • Adds documentation about various security risks that remain, particularly with interactive shells.
  • Adds explicit MSRV of 1.46.0.

1.2.1

  • Partial fix for the high-severity security vulnerability RUSTSEC-2024-0006 a.k.a. GHSA-r7qv-8r2h-pg27 without bumping MSRV:
    • The bytes { and \xa0 are now escaped by quoting functions.

1.2.0

  • Adds bytes module to support operating directly on byte strings.
Commits

Updates unsafe-libyaml from 0.2.8 to 0.2.11

Release notes

Sourced from unsafe-libyaml's releases.

0.2.11

  • Fix quadratic parse time for YAML containing deeply nested flow collections (#26)

0.2.10

  • Fix write to improperly aligned pointer in 32-bit targets (#21)

0.2.9

  • Documentation improvements
Commits
  • a7b8d1f Release 0.2.11
  • 7c42792 Merge pull request #27 from dtolnay/simplekeys
  • eb7de7e Fix quadratic behavior in yaml_parser_fetch_more_tokens
  • 7440d58 Merge pull request #25 from jayvdb/typos
  • b3496ce fix typos
  • 63131f5 Explicitly disable unsafe_op_in_unsafe_fn lint
  • 61f3ab8 Release 0.2.10
  • d90d7ab Clean up some redundant casts
  • 7755559 Merge pull request #24 from dtolnay/mallocalign
  • b8a0863 Fix insufficient alignment of malloc's return value on 32-bit
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps the cargo group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [time](https://github.com/time-rs/time) | `0.3.21` | `0.3.34` |
| [openssl](https://github.com/sfackler/rust-openssl) | `0.10.52` | `0.10.60` |
| [h2](https://github.com/hyperium/h2) | `0.3.19` | `0.3.26` |
| [libgit2-sys](https://github.com/rust-lang/git2-rs) | `0.15.1+1.6.4` | `0.15.2+1.6.4` |
| [rustix](https://github.com/bytecodealliance/rustix) | `0.36.14` | `0.36.17` |
| [shlex](https://github.com/comex/rust-shlex) | `1.1.0` | `1.3.0` |
| [unsafe-libyaml](https://github.com/dtolnay/unsafe-libyaml) | `0.2.8` | `0.2.11` |



Updates `time` from 0.3.21 to 0.3.34
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](time-rs/time@v0.3.21...v0.3.34)

Updates `openssl` from 0.10.52 to 0.10.60
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](sfackler/rust-openssl@openssl-v0.10.52...openssl-v0.10.60)

Updates `h2` from 0.3.19 to 0.3.26
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](hyperium/h2@v0.3.19...v0.3.26)

Updates `libgit2-sys` from 0.15.1+1.6.4 to 0.15.2+1.6.4
- [Changelog](https://github.com/rust-lang/git2-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/git2-rs/commits)

Updates `rustix` from 0.36.14 to 0.36.17
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](bytecodealliance/rustix@v0.36.14...v0.36.17)

Updates `shlex` from 1.1.0 to 1.3.0
- [Changelog](https://github.com/comex/rust-shlex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/comex/rust-shlex/commits)

Updates `unsafe-libyaml` from 0.2.8 to 0.2.11
- [Release notes](https://github.com/dtolnay/unsafe-libyaml/releases)
- [Commits](dtolnay/unsafe-libyaml@0.2.8...0.2.11)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  dependency-group: cargo
- dependency-name: openssl
  dependency-type: direct:production
  dependency-group: cargo
- dependency-name: h2
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: libgit2-sys
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: rustix
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: shlex
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: unsafe-libyaml
  dependency-type: indirect
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Apr 5, 2024
testfailed pushed a commit that referenced this pull request Jun 12, 2024
nushell#10851)

# Description
Fixes: nushell#10271

Given the following script:
```shell
# test.sh
echo aaaaa
echo bbbbb 1>&2
echo cc
```

This pr makes the following command possible:
```nushell
bash test.sh err> /dev/null | lines | each {|line| $line | str length}
```


## General idea behind the change:
When nushell redirect stderr message to external file
1. it take stdout of external stream, and pass this stream to next
command, so it won't block next pipeline command from running.
2. relative stderr stream are handled by `save` command

These two streams are handled separately, so we need to delegate a
thread to `save` command, or else we'll have a chance to hang nushell,
we have meet a similar before: nushell#5625.

### One case to consider
What if we're failed to save to an external stream? (Like we don't have
a permission to save to a file)?
In this case nushell will just print a waning message, and don't stop
the following scripts from running.

# User-Facing Changes
## Before
```nushell
❯ bash test2.sh err> /dev/null | lines | each {|line| $line | str length}
aaaaa
cc
```

## After
```nushell
❯ bash test2.sh err> /dev/null | lines | each {|line| $line | str length}
╭───┬───╮
│ 0 │ 5 │
│ 1 │ 2 │
╰───┴───╯
```

BTY, after this pr, the following commands are impossible either, it's
important to make sure that the implementation doesn't introduce too
much costs:
```nushell
❯ echo a e> a.txt e> a.txt
Error:   × Can't make stderr redirection twice
   ╭─[entry #1:1:1]
 1 │ echo a e> a.txt e> a.txt
   ·                 ─┬
   ·                  ╰── try to remove one
   ╰────

❯ echo a o> a.txt o> a.txt
Error:   × Can't make stdout redirection twice
   ╭─[entry #2:1:1]
 1 │ echo a o> a.txt o> a.txt
   ·                 ─┬
   ·                  ╰── try to remove one
   ╰────
```
testfailed pushed a commit that referenced this pull request Jun 12, 2024
Goes towards implementing nushell#10598, which asks for a spread operator in
lists, in records, and when calling commands (continuation of nushell#11006,
which only implements it in lists)

# Description
This PR is for adding a spread operator that can be used when building
records. Additional functionality can be added later.

Changes:

- Previously, the `Expr::Record` variant held `(Expression, Expression)`
pairs. It now holds instances of an enum `RecordItem` (the name isn't
amazing) that allows either a key-value mapping or a spread operator.
- `...` will be treated as the spread operator when it appears before
`$`, `{`, or `(` inside records (no whitespace allowed in between) (not
implemented yet)
- The error message for duplicate columns now includes the column name
itself, because if two spread records are involved in such an error, you
can't tell which field was duplicated from the spans alone

`...` will still be treated as a normal string outside records, and even
in records, it is not treated as a spread operator when not followed
immediately by a `$`, `{`, or `(`.

# User-Facing Changes
Users will be able to use `...` when building records.

```
> let rec = { x: 1, ...{ a: 2 } }
> $rec
╭───┬───╮
│ x │ 1 │
│ a │ 2 │
╰───┴───╯
> { foo: bar, ...$rec, baz: blah }
╭─────┬──────╮
│ foo │ bar  │
│ x   │ 1    │
│ a   │ 2    │
│ baz │ blah │
╰─────┴──────╯
```
If you want to update a field of a record, you'll have to use `merge`
instead:
```
> { ...$rec, x: 5 }
Error: nu::shell::column_defined_twice

  × Record field or table column used twice: x
   ╭─[entry #2:1:1]
 1 │  { ...$rec, x: 5 }
   ·       ──┬─  ┬
   ·         │   ╰── field redefined here
   ·         ╰── field first defined here
   ╰────
> $rec | merge { x: 5 }
╭───┬───╮
│ x │ 5 │
│ a │ 2 │
╰───┴───╯
```

# Tests + Formatting

# After Submitting
testfailed pushed a commit that referenced this pull request Jun 12, 2024
)

# Description
Fixes: nushell#11143

# User-Facing Changes
Take the following as example:
```nushell
module foo { export def bar [] {}; export def baz [] {} }
```

`use foo bar baz` will be error:
```
❯ use foo c d
Error: nu::parser::wrong_import_pattern

  × Wrong import pattern structure.
   ╭─[entry #2:1:1]
 1 │ use foo c d
   ·           ┬
   ·           ╰── Trying to import something but the parent `c` is not a module, maybe you want to try `use <module> [<name1>, <name2>]`
   ╰────
```

# Tests + Formatting
Done
testfailed pushed a commit that referenced this pull request Jun 12, 2024
this will allow to run
```nushell
format date --list | get 0
```
and get
```
─────────────┬───────────────────────────────────────────────────────────
Specification│%Y
Example      │2023
Description  │The full proleptic Gregorian year, zero-padded to 4 digits.
─────────────┴───────────────────────────────────────────────────────────
```
instead of currently
```
Error: nu::parser::input_type_mismatch

  × Command does not support string input.
   ╭─[entry #2:1:1]
 1 │ format date --list | get 0
   ·                      ─┬─
   ·                       ╰── command doesn't support string input
   ╰────
```
testfailed pushed a commit that referenced this pull request Jun 12, 2024
# Description
Currently, when writing a record, if you don't give the value for a
field, the syntax error highlights the entire record instead of
pinpointing the issue. Here's some examples:

```nushell
> { a: 2, 3 } # Missing colon (and value)
Error: nu::parser::parse_mismatch

  × Parse mismatch during operation.
   ╭─[entry #2:1:1]
 1 │  { a: 2, 3 }
   ·  ─────┬─────
   ·       ╰── expected record
   ╰────

> { a: 2, 3: } # Missing value
Error: nu::parser::parse_mismatch

  × Parse mismatch during operation.
   ╭─[entry nushell#3:1:1]
 1 │  { a: 2, 3: }
   ·  ──────┬─────
   ·        ╰── expected record
   ╰────

> { a: 2, 3 4 } # Missing colon
Error: nu::parser::parse_mismatch

  × Parse mismatch during operation.
   ╭─[entry nushell#4:1:1]
 1 │  { a: 2, 3 4 }
   ·  ──────┬──────
   ·        ╰── expected record
   ╰────
```

In all of them, the entire record is highlighted red because an
`Expr::Garbage` is returned covering that whole span:


![image](https://github.com/nushell/nushell/assets/45539777/36660b50-23be-4353-b180-3f84eff3c220)

This PR is for highlighting only the part inside the record that could
not be parsed. If the record literal is big, an error message pointing
to the start of where the parser thinks things went wrong should help
people fix their code.

# User-Facing Changes
Below are screenshots of the new errors:

If there's a stray record key right before the record ends, it
highlights only that key and tells the user it expected a colon after
it:


![image](https://github.com/nushell/nushell/assets/45539777/94503256-8ea2-47dd-b69a-4b520c66f7b6)

If the record ends before the value for the last field was given, it
highlights the key and colon of that field and tells the user it
expected a value after the colon:


![image](https://github.com/nushell/nushell/assets/45539777/2f3837ec-3b35-4b81-8c57-706f8056ac04)

If there are two consecutive expressions without a colon between them,
it highlights everything from the second expression to the end of the
record and tells the user it expected a colon. I was tempted to add a
help message suggesting adding a colon in between, but that may not
always be the right thing to do.


![image](https://github.com/nushell/nushell/assets/45539777/1abaaaa8-1896-4909-bbb7-9a38cece5250)

# Tests + Formatting

# After Submitting
testfailed pushed a commit that referenced this pull request Jun 12, 2024
# Description
This is a follow up to: nushell#11365

After this pr, `--flag: bool` is no longer allowed.

I think `ParseWarning::Deprecated` is useful when we want to deprecated
something at syntax level, so I just leave it there for now.

# User-Facing Changes
## Before
```
❯ def foo [--b: bool] {}
Error:   × Deprecated: --flag: bool
   ╭─[entry nushell#15:1:1]
 1 │ def foo [--b: bool] {}
   ·               ──┬─
   ·                 ╰── `--flag: bool` is deprecated and will be removed in 0.90. Please use `--flag` instead, more info: https://www.nushell.sh/book/custom_commands.html
   ╰────
```

## After
```
❯ def foo [--b: bool] {}
Error:   × Type annotations are not allowed for boolean switches.
   ╭─[entry #2:1:1]
 1 │ def foo [--b: bool] {}
   ·               ──┬─
   ·                 ╰── Remove the `: bool` type annotation.
   ╰────
```
# Tests + Formatting
Done
testfailed pushed a commit that referenced this pull request Jun 12, 2024
…r ints (nushell#11724)

# Description

This PR changes `into int` and `into filesize` so that they allow
thousands separators.

### Before
```nushell
❯ '1,000' | into filesize
Error: nu::shell::cant_convert

  × Can't convert to int.
   ╭─[entry #1:1:1]
 1 │ '1,000' | into filesize
   · ───┬───
   ·    ╰── can't convert string to int
   ╰────

❯ '1,000' | into int
Error: nu:🐚:cant_convert

  × Can't convert to int.
   ╭─[entry #2:1:1]
 1 │ '1,000' | into int
   ·           ────┬───
   ·               ╰── can't convert string to int
   ╰────
  help: string "1,000" does not represent a valid integer
```
### After
```nushell
❯ '1,000' | into filesize
1.0 KB
❯ '1,000' | into int
1000
```

This works by getting the system locale and from that, determining what
the thousands separator is. So, hopefully, this will work across
locales.
# User-Facing Changes
<!-- List of all changes that impact the user experience here. This
helps us keep track of breaking changes. -->

# Tests + Formatting
<!--
Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to
check that you're using the standard code style
- `cargo test --workspace` to check that all tests pass (on Windows make
sure to [enable developer
mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging))
- `cargo run -- -c "use std testing; testing run-tests --path
crates/nu-std"` to run the tests for the standard library

> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
-->

# After Submitting
<!-- If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
-->
testfailed pushed a commit that referenced this pull request Jun 12, 2024
# Description
Close: nushell#9673
Close: nushell#8277
Close: nushell#10944

This pr introduces the following syntax:
1. `e>|`, pipe stderr to next command. Example: `$env.FOO=bar nu
--testbin echo_env_stderr FOO e>| str length`
2. `o+e>|` and `e+o>|`, pipe both stdout and stderr to next command,
example: `$env.FOO=bar nu --testbin echo_env_mixed out-err FOO FOO e+o>|
str length`

Note: it only works for external commands. ~There is no different for
internal commands, that is, the following three commands do the same
things:~ Edit: it raises errors if we want to pipes for internal
commands
``` 
❯ ls e>| str length
Error:   × `e>|` only works with external streams
   ╭─[entry #1:1:1]
 1 │ ls e>| str length
   ·    ─┬─
   ·     ╰── `e>|` only works on external streams
   ╰────

❯ ls e+o>| str length
Error:   × `o+e>|` only works with external streams
   ╭─[entry #2:1:1]
 1 │ ls e+o>| str length
   ·    ──┬──
   ·      ╰── `o+e>|` only works on external streams
   ╰────
```

This can help us to avoid some strange issues like the following:

`$env.FOO=bar (nu --testbin echo_env_stderr FOO) e>| str length`

Which is hard to understand and hard to explain to users.

# User-Facing Changes
Nan

# Tests + Formatting
To be done

# After Submitting
Maybe update documentation about these syntax.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants