Reorder export-env eval and allow reloading an overlay #7231
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR is a response to the issues raised in #7087. It consists of two changes:
export-env
, when evaluated inoverlay use
, will see the original environment. Previously, it would see the environment from previous overlay activation.--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
, butoverlay use
would keep loading the value from the first activation. You can easily test it by defining a moduleCalling
overlay use prompt
for the first time changes the prompt to the current time, however, subsequent calls ofoverlay 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: Callingoverlay use --reload prompt
repeatedly now updates the prompt with the current time each time.User-Facing Changes
overlay use
, if the module has anexport-env
block, the block will see the environment as it is before the overlay is activated. Previously, it was after.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 stylecargo test --workspace
to check that all tests passAfter 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.