Skip to content

Conversation

@sophiajt
Copy link
Contributor

Description

Removes the env command, as the $env is generally a much better experience.

User-Facing Changes

Breaking change: Removes env.

Tests + Formatting

Don't forget to add tests that cover your changes.

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

  • cargo fmt --all -- --check to check standard code formatting (cargo fmt --all applies these changes)
  • cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect to check that you're using the standard code style
  • cargo test --workspace to check that all tests pass

After Submitting

If your PR had any user-facing changes, update the documentation after the PR is merged, if necessary. This will help us keep the docs up to date.

@kubouch
Copy link
Contributor

kubouch commented Feb 26, 2023

Here is the virtualenv update: pypa/virtualenv#2506

@codecov
Copy link

codecov bot commented Feb 28, 2023

Codecov Report

Merging #8185 (9f95a9f) into main (592e677) will decrease coverage by 0.03%.
The diff coverage is 100.00%.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #8185      +/-   ##
==========================================
- Coverage   67.72%   67.70%   -0.03%     
==========================================
  Files         621      620       -1     
  Lines       99312    99242      -70     
==========================================
- Hits        67258    67189      -69     
+ Misses      32054    32053       -1     
Impacted Files Coverage Δ
crates/nu-command/src/default_context.rs 99.78% <ø> (-0.01%) ⬇️
crates/nu-cli/src/print.rs 100.00% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/alias.rs 100.00% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/break_.rs 100.00% <100.00%> (ø)
...rates/nu-cmd-lang/src/core_commands/commandline.rs 54.68% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/continue_.rs 100.00% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/def.rs 100.00% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/def_env.rs 100.00% <100.00%> (ø)
crates/nu-cmd-lang/src/core_commands/do_.rs 95.27% <100.00%> (ø)
...ates/nu-cmd-lang/src/core_commands/export_alias.rs 79.54% <100.00%> (ø)
... and 173 more

@sophiajt sophiajt force-pushed the remove_env_command branch from b8b6f49 to 522183a Compare March 1, 2023 03:16
@sophiajt sophiajt merged commit e22b70a into nushell:main Mar 1, 2023
@sophiajt sophiajt deleted the remove_env_command branch March 1, 2023 08:20
@sholderbach sholderbach added the notes:breaking-changes This PR implies a change affecting users and has to be noted in the release notes label Mar 14, 2023
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Mar 15, 2023
Themes of this release / New features
 - Reworked aliases (Breaking changes!) (kubouch)
   Aliases have been a constant source of panics and growing code complexity as
   a result of trying to patch the panics. In this release, we re-implement
   aliases from scratch. Instead of replacing spans of expressions, aliases are
   implemented as another type of command, quite like extern is used to
   implement known externals. Alias is a command that wraps another command
   call. As a result, in some cases, aliases do not behave exactly the same as
   before. Here are the key facts:
    - Alias can only alias another command call. For example, alias la = ls -a
    works, but the following does not:
       - alias foo = "foo"
            "foo" is not a command call, use alias foo = echo "foo" instead
       - alias lsn = (ls | sort-by type name -i)
            subexpression is not a command call, use a custom command instead
     - Alias cannot alias command named the same as the alias. E.g., alias
     ls = ls -a is not possible currently, and gives an unhelpful error message.
     We plan to fix this as soon as possible and in the future we aim for this
     to work.
     - Some parser keywords are not allowed to be aliased. Currently, overlay
     commands can be aliased but the other parser keywords can not. We can add
     support for aliasing more parser keywords in the future.

If some of the above is too limiting for you, the old aliases are still
unchanged and available as old-alias. Just change alias to old-alias and it
should work the same as before. If there are no more problems with the new
alias implementation, and we manage to iron out the recursive alias issue,
we will remove old-alias in the next release, otherwise, we'll keep it around
longer.

 - More consistent timestamp handling (bobhy)
   Simplified conversion between Nushell date type and unix timestamps (#8244).

Nushell now standardizes on representing a Unix timestamp as a number of
nanoseconds relative to the unix epoch 1970-01-01 00:00:00 +0000 (UTC).
Since the timestamp is stored in a (64 bit signed) Nushell int type, this
limits the range of dates that can be represented to approximately 21-sep-1677
through 11-apr-2262.

In prior versions, Nushell attempted to extend the range of representable dates
by allowing multiple resolutions of timestamps (seconds, milliseconds as well
as nanoseconds) to be stored and relied on arbitrary range check heuristics to
disambiguate the value intended. However, there were bugs in the checks and
incorrect results could be produced.

With this change <int> | into datetime assumes the input is a number of
nanoseconds and can never produce a date outside this range.
The timestamp epoch is the standard unix epoch. Note the timezone is UTC/GMT.

<datetime> | into int can now produce an error if the input is outside the
supported range.

And finally, although not strictly required by the above fix,
<date> | date to-record and <date> | date to-table now have a nanosecond field
containing the subsecond residue of the input value (however it was produced).

 - New XML format (NotLebedev)

 New format for xml data created and accepted by from xml and to xml commands
 (#7947).

Commands from xml and to xml now use format where each xml entry is represented
by a single {tag: <tag name> attributes: <tag attributes> content:
[<child entries>]} record. Special xml entries also use this record, replacing
irrelevant fields with null for easier use.

Creating a little html page. In case of to xml one can deviate from rigid
structure and omit empty fields of records.

 - New additions to $nu (StevenDoesStuffs, amtoine)
 The builtin $nu variable now contains new entries:
  - is-interactive: Nushell was launched in interactive mode
  - is-login: Nushell was launched in login mode
  - startup_time: Nushell's startup time

 - Reworked http subcommands (jaudiger)

The http command now has more subcommands and existing subcommands have been
reworked.

Make sure to browse the help messages of these commands. They contain fully
functional examples thanks to pointing at www.example.com.

 - Breaking changes

    - Alias changes, see above
    - env command has been removed, use $env instead
    (nushell/nushell#8185)
    - str trim no longer has --all, --both, and --format flags. str replace
    should be an adequate replacement; please let us know if it is not (#8205)
    - The changes to timestamp handling noted above (#8244) can require code
    changes to existing scripts:
      - Saved data containing the results of an old datetime-to-timestamp
      conversion will not deserialize correctly when read back by the current
      version of Nushell. In general, Nushell will produce incorrect datetime
      values without noting an error.
      - <int> | into datetime now assumes nanosecond scaling for all timestamps.
      You must ensure all timestamps computed by your script or retrieved from
      external sources are scaled appropriately.
      - <date> | into int can now fail, as noted above. You cannot rely on this
      operation to persist a arbitrary date.
    - The change to from xml and to xml commands noted above (#7947) will
    require to update scripts relying on old output/input format.
    - mkdir, cp, mv and rm return nothing. Errors and actions with --verbose
    flag are printed to stderr instead (#8014).
    - Plugin authors relying on nu_protocol::Value may need to update their
    code to account for a change to Value::Error (#8375    )
    - Different types of lists can now be appended. This can break scripts that
    were relying on the stricter behavior
    (nushell/nushell#8157)
@rukai
Copy link

rukai commented Mar 15, 2023

What is the equivalent of (env).name for $env?

(Asking here because it's at least linked to from the changelog)

@ineu
Copy link
Contributor

ineu commented Mar 15, 2023

I believe it should be $env | columns, e.g.: if "VAR" in ($env | columns)

@kubouch
Copy link
Contributor

kubouch commented Mar 15, 2023

You can also do just if "VAR" in $env

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

notes:breaking-changes This PR implies a change affecting users and has to be noted in the release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants