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

Make some shell scripts more robust #6219

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

sellout
Copy link
Contributor

@sellout sellout commented Oct 24, 2022

Some linters were disappearing failure statuses. This fixes them and tries to reduce the chance of them reappearing via a stricter linter.

I didn’t rename the lint-shell-locale linter, because I figured this makes it easier to keep in sync with upstream changes.

@sellout sellout marked this pull request as draft October 24, 2022 03:21
@sellout sellout force-pushed the improve-shell-scripts branch 3 times, most recently from 4dc2a30 to 7128503 Compare October 24, 2022 06:08
HEADER_ID_PREFIX="ZCASH_"
HEADER_ID_PREFIX_UPSTREAM="BITCOIN_"
HEADER_ID_SUFFIX="_H"

REGEXP_EXCLUDE_FILES_WITH_PREFIX="src/(crypto/ctaes/|leveldb/|crc32c/|secp256k1/|tinyformat.h|univalue/)"

EXIT_CODE=0
for HEADER_FILE in $(git ls-files -- "*.h" | grep -vE "^${REGEXP_EXCLUDE_FILES_WITH_PREFIX}")
HEADER_FILES=$(git ls-files -- "*.h" | grep -vE "^${REGEXP_EXCLUDE_FILES_WITH_PREFIX}")
for HEADER_FILE in $HEADER_FILES
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just learned about shopt -s inherit_errexit, which seems like it’ll let the original version of this code error properly. I think that’s a better change than to restructure the code to avoid the subshell error handling.

sellout and others added 5 commits October 30, 2022 00:32
If command substitution is used inside another command, the exit status of the
substituted command is lost.

I ran into this in lint-shell-locale.sh, where it looked like it succeeded and
exited with `0` even though there are currently known failures. The issue was
that `git` wasn’t in the path, but the output was consumed by the substitution
and the exit status was lost.

Strict mode makes sure situations like this (and others) report a failure.
This also enables lint-shell-locale on CI.
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

Successfully merging this pull request may close these issues.

None yet

1 participant