From 14aded46df289e2d05f9fd79c81f2e8ed68a1487 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 3 Nov 2019 20:55:06 +0200 Subject: script: Lint Gitian descriptors with ShellCheck --- test/lint/lint-shell.sh | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) (limited to 'test/lint') diff --git a/test/lint/lint-shell.sh b/test/lint/lint-shell.sh index 69fc3cf368..c70525d9a9 100755 --- a/test/lint/lint-shell.sh +++ b/test/lint/lint-shell.sh @@ -1,6 +1,6 @@ #!/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 # file COPYING or http://www.opensource.org/licenses/mit-license.php. # @@ -16,16 +16,48 @@ if [ "$TRAVIS" = "true" ]; then unset LC_ALL fi -if ! command -v shellcheck > /dev/null; then - echo "Skipping shell linting since shellcheck is not installed." - exit 0 -fi - # Disabled warnings: disabled=( SC2046 # Quote this to prevent word splitting. SC2086 # Double quote to prevent globbing and word splitting. SC2162 # read without -r will mangle backslashes. ) -shellcheck -e "$(IFS=","; echo "${disabled[*]}")" \ - $(git ls-files -- "*.sh" | grep -vE 'src/(secp256k1|univalue)/') +disabled_gitian=( + 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 -- cgit v1.2.3 From 577682d9e8cc07a8db9459a47b01f6c18decba7c Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 3 Nov 2019 21:39:19 +0200 Subject: script: Enable SC2006 rule for Gitian scripts --- test/lint/lint-shell.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'test/lint') diff --git a/test/lint/lint-shell.sh b/test/lint/lint-shell.sh index c70525d9a9..0e1a7bc4f0 100755 --- a/test/lint/lint-shell.sh +++ b/test/lint/lint-shell.sh @@ -24,7 +24,6 @@ disabled=( ) disabled_gitian=( 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. -- cgit v1.2.3 From 61bb21b4181c06b5956b5d6f2f7831e56e4f1cf6 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 3 Nov 2019 21:57:11 +0200 Subject: script: Enable SC2155 rule for Gitian scripts Also pwd command is replaced with $PWD variable everywhere for consistency. --- test/lint/lint-shell.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'test/lint') diff --git a/test/lint/lint-shell.sh b/test/lint/lint-shell.sh index 0e1a7bc4f0..ce371455ed 100755 --- a/test/lint/lint-shell.sh +++ b/test/lint/lint-shell.sh @@ -26,7 +26,6 @@ disabled_gitian=( SC2001 # See if you can use ${variable//search/replace} instead. 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. ) -- cgit v1.2.3 From 17f81e96486780df5d464487975ecb11b278ec8d Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 3 Nov 2019 22:32:50 +0200 Subject: script: Enable SC2001 rule for Gitian scripts --- test/lint/lint-shell.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'test/lint') diff --git a/test/lint/lint-shell.sh b/test/lint/lint-shell.sh index ce371455ed..63624e3ae0 100755 --- a/test/lint/lint-shell.sh +++ b/test/lint/lint-shell.sh @@ -23,7 +23,6 @@ disabled=( SC2162 # read without -r will mangle backslashes. ) disabled_gitian=( - SC2001 # See if you can use ${variable//search/replace} instead. 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. SC2230 # which is non-standard. Use builtin 'command -v' instead. -- cgit v1.2.3