You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.1 KiB
32 lines
1.1 KiB
#!/usr/bin/env bash |
|
# |
|
# Copyright (c) 2018-2021 The Bitcoin Core developers |
|
# Distributed under the MIT software license, see the accompanying |
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|
# |
|
# Check for shellcheck warnings in shell scripts. |
|
|
|
export LC_ALL=C |
|
|
|
# Disabled warnings: |
|
disabled=( |
|
) |
|
|
|
EXIT_CODE=0 |
|
|
|
if ! command -v shellcheck > /dev/null; then |
|
echo "Skipping shell linting since shellcheck is not installed." |
|
exit $EXIT_CODE |
|
fi |
|
|
|
SHELLCHECK_CMD=(shellcheck --external-sources --check-sourced --source-path=SCRIPTDIR) |
|
EXCLUDE="--exclude=$(IFS=','; echo "${disabled[*]}")" |
|
# Check shellcheck directive used for sourced files |
|
mapfile -t SOURCED_FILES < <(git ls-files | xargs gawk '/^# shellcheck shell=/ {print FILENAME} {nextfile}') |
|
mapfile -t GUIX_FILES < <(git ls-files contrib/guix contrib/shell | xargs gawk '/^#!\/usr\/bin\/env bash/ {print FILENAME} {nextfile}') |
|
mapfile -t FILES < <(git ls-files -- '*.sh' | grep -vE 'src/(leveldb|secp256k1|minisketch|univalue)/') |
|
if ! "${SHELLCHECK_CMD[@]}" "$EXCLUDE" "${SOURCED_FILES[@]}" "${GUIX_FILES[@]}" "${FILES[@]}"; then |
|
EXIT_CODE=1 |
|
fi |
|
|
|
exit $EXIT_CODE
|
|
|