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

interp: add BashOpts for shopt options, just like Params for set options #962

Open
pd93 opened this issue Jan 7, 2023 · 1 comment
Open

Comments

@pd93
Copy link

pd93 commented Jan 7, 2023

interp.New() currently has a field for accepting a set of interp.Params(params...). This allows us to set POSIX options like set -e. However, we are not able to pass Bash opts (like shopt -s pipefail), despite the project supporting them. This leads to us having to manually prepend these commands in Task. See this related issue and PR.

It would be really nice if we has something like interp.BashOpts(opts...) to do this for us.

I've been meaning to open a PR for a while for this, but simply haven't had the time. I'm opening this issue for now in case anyone has more bandwidth to work on this.

@mvdan
Copy link
Owner

mvdan commented Jan 7, 2023

You're right that there's an asymmetry here, so we should fix that.

I'm not entirely sure why I called the existing API Params. It can be used to set the arguments per "$@", but it also behaves like set so it allows setting some options. In any case, I think BashOpts is okay.

We should be careful about the behavior of interp.BashOpts(), as shopt without arguments prints all existing options, and we likely don't want that in the constructor. I think it could be a no-op for zero arguments.

@mvdan mvdan changed the title Support Bash ops (shopt) in interp.Runner interp: add BashOpts for shopt options, just like Params for set options Jan 7, 2023
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

No branches or pull requests

2 participants