-
Notifications
You must be signed in to change notification settings - Fork 338
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
Improve PowerShell plugin's profile handling functionality #1777
base: main
Are you sure you want to change the base?
Improve PowerShell plugin's profile handling functionality #1777
Conversation
|
* Add support for the `package_commands_sourced_first` config switch. Prior to this change, the rez PowerShell implementation would always source the rez context script after the user/host profile scripts, so profile-level modifications to environment variables like `PATH` were always squashed by the unconditional overrides in the context script. With this change, the relative source order of the shell profile vs. the context script can be properly controlled using the `package_commands_sourced_first` config option, matching the behavior of `SH`-based shells. NOTE: Because this config option defaults to True, this commit also implicitly changes rez's default behavior to source the shell profile *after* the context when using PowerShell. * Support the `norc` shell plugin option, which enables the use of `rez-env --norc` to bypass the sourcing of any profile scripts. Signed-off-by: Nathan Rusch <[email protected]>
5b7157b
to
7f3678a
Compare
'$PROFILE ' | ||
'| Get-Member -type NoteProperty ' | ||
'| ForEach-Object { if (Test-Path $PROFILE."$($_.Name)") { . $PROFILE."$($_.Name)" }}') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that this is a dynamic approach to discovering available profile scripts, but it may be preferable to hardcode iteration over the known profile slots documented here.
This could look something like this (+/- formatting):
foreach ($name in 'AllUsersAllHosts', 'AllUsersCurrentHost', 'CurrentUserAllHosts', 'CurrentUserCurrentHost')
{
if (Test-Path $PROFILE.$name) {
. $PROFILE.$name
}
}
This may indirectly "resolve" #1279, since the user's profile will have the final say on any shell customization. |
The CLA has been sorted for rez. I'm not sure why this PR's status isn't updating though... |
/easycla |
@nrusch it should be good now. I manually triggered a refresh and it's now green. |
Improvements to the PowerShell plugin to support profile-related settings/options.
Add support for the
package_commands_sourced_first
config/runtime optionPrior to this change, the rez PowerShell implementation would always source the rez context script after the user/host profile scripts, so profile-level modifications to environment variables like
PATH
were always squashed by the unconditional overrides in the context script.With this change, the relative source order of the shell profile vs. the context script can be properly controlled using the
package_commands_sourced_first
config option, matching the behavior ofSH
-based shells.NOTE: Because this option defaults to True, this also implicitly changes rez's default behavior to source the shell profile after the context when using PowerShell.
Support the
norc
shell plugin option.This enables the use of
rez-env --norc
to bypass the sourcing of any profile scripts when using PowerShell.