Open pd93 opened 1 year ago
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.
interp.New()
currently has a field for accepting a set ofinterp.Params(params...)
. This allows us to set POSIX options likeset -e
. However, we are not able to pass Bash opts (likeshopt -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.