mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-22 15:04:44 +01:00
script: Lint Gitian descriptors with ShellCheck
This commit is contained in:
parent
22a58811d4
commit
14aded46df
3 changed files with 43 additions and 9 deletions
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018 The Bitcoin Core developers
|
# Copyright (c) 2018-2019 The Bitcoin Core developers
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ export LC_ALL=C
|
||||||
|
|
||||||
travis_retry pip3 install codespell==1.15.0
|
travis_retry pip3 install codespell==1.15.0
|
||||||
travis_retry pip3 install flake8==3.7.8
|
travis_retry pip3 install flake8==3.7.8
|
||||||
|
travis_retry pip3 install yq
|
||||||
|
|
||||||
SHELLCHECK_VERSION=v0.6.0
|
SHELLCHECK_VERSION=v0.6.0
|
||||||
curl -s "https://storage.googleapis.com/shellcheck/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
|
curl -s "https://storage.googleapis.com/shellcheck/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
|
||||||
|
|
|
@ -258,6 +258,7 @@ Use the `-v` option for verbose output.
|
||||||
|-----------|:----------:|:-------------------------------------------:|--------------
|
|-----------|:----------:|:-------------------------------------------:|--------------
|
||||||
| [`lint-python.sh`](lint/lint-python.sh) | [flake8](https://gitlab.com/pycqa/flake8) | [3.7.8](https://github.com/bitcoin/bitcoin/pull/15257) | `pip3 install flake8==3.7.8`
|
| [`lint-python.sh`](lint/lint-python.sh) | [flake8](https://gitlab.com/pycqa/flake8) | [3.7.8](https://github.com/bitcoin/bitcoin/pull/15257) | `pip3 install flake8==3.7.8`
|
||||||
| [`lint-shell.sh`](lint/lint-shell.sh) | [ShellCheck](https://github.com/koalaman/shellcheck) | [0.6.0](https://github.com/bitcoin/bitcoin/pull/15166) | [details...](https://github.com/koalaman/shellcheck#installing)
|
| [`lint-shell.sh`](lint/lint-shell.sh) | [ShellCheck](https://github.com/koalaman/shellcheck) | [0.6.0](https://github.com/bitcoin/bitcoin/pull/15166) | [details...](https://github.com/koalaman/shellcheck#installing)
|
||||||
|
| [`lint-shell.sh`](lint/lint-shell.sh) | [yq](https://github.com/kislyuk/yq) | default | `pip3 install yq`
|
||||||
| [`lint-spelling.sh`](lint/lint-spelling.sh) | [codespell](https://github.com/codespell-project/codespell) | [1.15.0](https://github.com/bitcoin/bitcoin/pull/16186) | `pip3 install codespell==1.15.0`
|
| [`lint-spelling.sh`](lint/lint-spelling.sh) | [codespell](https://github.com/codespell-project/codespell) | [1.15.0](https://github.com/bitcoin/bitcoin/pull/16186) | `pip3 install codespell==1.15.0`
|
||||||
|
|
||||||
Please be aware that on Linux distributions all dependencies are usually available as packages, but could be outdated.
|
Please be aware that on Linux distributions all dependencies are usually available as packages, but could be outdated.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018 The Bitcoin Core developers
|
# Copyright (c) 2018-2019 The Bitcoin Core developers
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
#
|
#
|
||||||
|
@ -16,16 +16,48 @@ if [ "$TRAVIS" = "true" ]; then
|
||||||
unset LC_ALL
|
unset LC_ALL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v shellcheck > /dev/null; then
|
|
||||||
echo "Skipping shell linting since shellcheck is not installed."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disabled warnings:
|
# Disabled warnings:
|
||||||
disabled=(
|
disabled=(
|
||||||
SC2046 # Quote this to prevent word splitting.
|
SC2046 # Quote this to prevent word splitting.
|
||||||
SC2086 # Double quote to prevent globbing and word splitting.
|
SC2086 # Double quote to prevent globbing and word splitting.
|
||||||
SC2162 # read without -r will mangle backslashes.
|
SC2162 # read without -r will mangle backslashes.
|
||||||
)
|
)
|
||||||
shellcheck -e "$(IFS=","; echo "${disabled[*]}")" \
|
disabled_gitian=(
|
||||||
$(git ls-files -- "*.sh" | grep -vE 'src/(secp256k1|univalue)/')
|
SC2001 # See if you can use ${variable//search/replace} instead.
|
||||||
|
SC2006 # Use $(...) notation instead of legacy backticked `...`.
|
||||||
|
SC2094 # Make sure not to read and write the same file in the same pipeline.
|
||||||
|
SC2129 # Consider using { cmd1; cmd2; } >> file instead of individual redirects.
|
||||||
|
SC2155 # Declare and assign separately to avoid masking return values.
|
||||||
|
SC2230 # which is non-standard. Use builtin 'command -v' instead.
|
||||||
|
)
|
||||||
|
|
||||||
|
EXIT_CODE=0
|
||||||
|
|
||||||
|
if ! command -v shellcheck > /dev/null; then
|
||||||
|
echo "Skipping shell linting since shellcheck is not installed."
|
||||||
|
exit $EXIT_CODE
|
||||||
|
fi
|
||||||
|
|
||||||
|
EXCLUDE="--exclude=$(IFS=','; echo "${disabled[*]}")"
|
||||||
|
if ! shellcheck "$EXCLUDE" $(git ls-files -- '*.sh' | grep -vE 'src/(leveldb|secp256k1|univalue)/'); then
|
||||||
|
EXIT_CODE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v yq > /dev/null; then
|
||||||
|
echo "Skipping Gitian desriptor scripts checking since yq is not installed."
|
||||||
|
exit $EXIT_CODE
|
||||||
|
fi
|
||||||
|
|
||||||
|
EXCLUDE_GITIAN=${EXCLUDE}",$(IFS=','; echo "${disabled_gitian[*]}")"
|
||||||
|
for descriptor in $(git ls-files -- 'contrib/gitian-descriptors/*.yml')
|
||||||
|
do
|
||||||
|
echo
|
||||||
|
echo "$descriptor"
|
||||||
|
# Use #!/bin/bash as gitian-builder/bin/gbuild does to complete a script.
|
||||||
|
SCRIPT=$'#!/bin/bash\n'$(yq -r .script "$descriptor")
|
||||||
|
if ! echo "$SCRIPT" | shellcheck "$EXCLUDE_GITIAN" -; then
|
||||||
|
EXIT_CODE=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $EXIT_CODE
|
||||||
|
|
Loading…
Add table
Reference in a new issue