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

Reorder export-env eval and allow reloading an overlay #7231

Merged
merged 5 commits into from
Nov 24, 2022

Conversation

kubouch
Copy link
Contributor

@kubouch kubouch commented Nov 24, 2022

Description

This PR is a response to the issues raised in #7087. It consists of two changes:

  • export-env, when evaluated in overlay use, will see the original environment. Previously, it would see the environment from previous overlay activation.
  • Added a new --reload flag that reloads the overlay. Custom definitions will be kept but the original definitions and environment will be reloaded.

This enables a pattern when an overlay is supposed to shadow an existing environment variable, such as PROMPT_COMMAND, but overlay use would keep loading the value from the first activation. You can easily test it by defining a module

module prompt {
    export-env {
        let-env PROMPT_COMMAND = (date now | into string)
    }
}

Calling overlay use prompt for the first time changes the prompt to the current time, however, subsequent calls of overlay use won't change the time. That's because overlays, once activated, store their state so they can be hidden and restored at later time. To force-reload the environment, use the new flag: Calling overlay use --reload prompt repeatedly now updates the prompt with the current time each time.

User-Facing Changes

  • When calling overlay use, if the module has an export-env block, the block will see the environment as it is before the overlay is activated. Previously, it was after.
  • A new overlay use --reload flag.

Tests + Formatting

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

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

  • cargo fmt --all -- --check to check standard code formatting (cargo fmt --all applies these changes)
  • cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -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 kubouch merged commit 2388e1e into nushell:main Nov 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant