-
Notifications
You must be signed in to change notification settings - Fork 249
[perf] Replace only-path-without-wrappers with sed #1535
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
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,12 +25,13 @@ eval "$(DO_NOT_TRACK=1 devbox shellenv --preserve-path-stack -c {{ .ProjectDir } | |
fi | ||
|
||
{{/* | ||
We call only-path-without-wrappers so that we do not invoke other bin-wrappers from | ||
Remove wrapper bin path from PATH so that we don't call more bin-wrappers from | ||
this bin-wrapper. Instead, we directly invoke the binary from the nix store, which | ||
should be in PATH. | ||
|
||
DO_NOT_TRACK=1 can be removed once we optimize segment to queue events. | ||
This is implemented in sed for efficiency. sed is POSIX so we assume it's available. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh interesting. Availability was one of the concerns earlier. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @savil if it's a concern we can implement in pure bash. Here's an implementation that only uses bash builtins: IFS=: read -ra dirs <<< "$PATH" # Split PATH into an array using colon as a delimiter
new_PATH=""
for dir in "${dirs[@]}"; do
if [[ "$dir" != "/path/to/remove" ]]; then
if [[ -z "$new_PATH" ]]; then
new_PATH="$dir"
else
new_PATH="$new_PATH:$dir"
fi
fi
done
export PATH="$new_PATH" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh not too bad. That's fairly understandable except for:
:D There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. but now that makes sense too... |
||
|
||
*/ -}} | ||
eval "$(DO_NOT_TRACK=1 devbox shellenv only-path-without-wrappers)" | ||
export PATH=$(echo $PATH | sed -e 's#:{{ .WrapperBinPath }}##' -e 's#{{ .WrapperBinPath }}:##' -e 's#{{ .WrapperBinPath }}##') | ||
|
||
exec {{ .Command }} "$@" |
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.
lets confirm this prints to Stderr and not Stdout, otherwise existing bin-wrappers may not work.
That said, I suppose we will re-generate the bin-wrappers due to the Devbox version change when this is released, so may be not a concern either way.
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.
Good call. It's actually
OutOrStdErr
which is currently Stderr, but we can't guarantee that. Will remove.