feat: Make shell more robust #3051
Merged
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.
I noticed a few things to improve in the current implementation of the shell
commands, so I went ahead and did it.
Changes
per-shell configuration
eval ${input.command}
which is error-prone and not generalfor either shell, which could cause unintended side-effects
Verification
Ran the following:
SHELL=fish opencode
SHELL=sh opencode
SHELL=bash opencode
SHELL=zsh opencode
SHELL=nu opencode
SHELL= opencode
(shows an error notification in the TUI, same as the current production version)and within those TUI instances running the following command:
!echo "$SHELL"
(!echo ($env.SHELL)
fornu
): prints the correct valueTried the following edge cases in a random sample of shells:
!
(empty shell command)!cat
!bash
!| cat
None of those block, and have identical behavior as the production version.