restrict with-exit-codes to "run", "bash" and "system" #2742
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.
This PR follow a remark by @aalekseyev that the current semantics of
with-exit-codes
are not quite OK: in(with-exit-codes 2 (progn (exit 2) do_thing)
,do_thing
will run, which is not expected.Some alternatives were discussed:
fix the behaviour: this means propagating the exit code of each
run
so that the enclosing action can decide whether to continue sequentially or simply return until the nearestwith-exit-codes
handler is found.switch to a special action
(with-accepted-exit-codes <codes> <prog> <args>)
add an optional argument to
run
to specify accepted exit codes.I investigated 1), but the change seemed to complicate the code throughout simply to support this feature. It wasn't clear to me that the tradeoff was worth it. On the other hand, extending the syntax as in 3) is a bit tricky and needs more discussion.
So I implement 2) in this PR.