ci: Pacify shellcheck version 0.8 and apply other linting improvements

Work around a limitation in the `shellcheck source` directive, which
does not recognize quotes in shellcheck versions older than 0.9.

Also extend the checks for YAML files over the entire source tree, in
preparation for the introduction of the GitHub Actions config file.
This commit is contained in:
Cosmin Truta 2024-02-15 14:37:24 +02:00
parent fb65436e06
commit f74d5ecce8
6 changed files with 42 additions and 41 deletions

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"
@ -47,10 +47,10 @@ function ci_finish_lint {
ci_info "## END OF LINTING ##" ci_info "## END OF LINTING ##"
if [[ $CI_LINT_COUNTER -eq 0 ]] if [[ $CI_LINT_COUNTER -eq 0 ]]
then then
ci_info "success!" ci_info "## SUCCESS ##"
return 0 return 0
else else
ci_warn "$CI_LINT_COUNTER failure(s)" ci_info "linting failed"
return 1 return 1
fi fi
} }
@ -61,14 +61,15 @@ function ci_lint_ci_scripts {
return 0 return 0
} }
ci_info "## LINTING: CI scripts ##" ci_info "## LINTING: CI scripts ##"
local my_file {
ci_spawn "$CI_SHELLCHECK" --version local my_file
for my_file in ci/*.sh ci_spawn "$CI_SHELLCHECK" --version
do find ./ci -maxdepth 1 -name "*.sh" |
ci_spawn "$CI_SHELLCHECK" -x "$my_file" || { while IFS="" read -r my_file
CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) do
} ci_spawn "$CI_SHELLCHECK" -x "$my_file"
done done
} || CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
} }
function ci_lint_text_files { function ci_lint_text_files {
@ -77,7 +78,6 @@ function ci_lint_text_files {
return 0 return 0
} }
ci_info "## LINTING: text files ##" ci_info "## LINTING: text files ##"
local my_file
ci_spawn "$CI_EDITORCONFIG_CHECKER" --version ci_spawn "$CI_EDITORCONFIG_CHECKER" --version
ci_spawn "$CI_EDITORCONFIG_CHECKER" || { ci_spawn "$CI_EDITORCONFIG_CHECKER" || {
CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
@ -90,14 +90,15 @@ function ci_lint_yaml_files {
return 0 return 0
} }
ci_info "## LINTING: YAML files ##" ci_info "## LINTING: YAML files ##"
local my_file {
ci_spawn "$CI_YAMLLINT" --version local my_file
for my_file in .*.yml ci_spawn "$CI_YAMLLINT" --version
do find . \( -iname "*.yml" -o -iname "*.yaml" \) -not -path "./out/*" |
ci_spawn "$CI_YAMLLINT" --strict "$my_file" || { while IFS="" read -r my_file
CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) do
} ci_spawn "$CI_YAMLLINT" --strict "$my_file"
done done
} || CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1))
} }
function ci_lint { function ci_lint {

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"
@ -126,23 +126,23 @@ function ci_build {
local all_cmake_build_flags=() local all_cmake_build_flags=()
local all_ctest_flags=() local all_ctest_flags=()
[[ $CI_CMAKE_TOOLCHAIN_FILE ]] && { [[ $CI_CMAKE_TOOLCHAIN_FILE ]] && {
all_cmake_vars+=(-DCMAKE_TOOLCHAIN_FILE="$CI_CMAKE_TOOLCHAIN_FILE") all_cmake_vars+=("-DCMAKE_TOOLCHAIN_FILE=$CI_CMAKE_TOOLCHAIN_FILE")
} }
[[ $CI_CC ]] && { [[ $CI_CC ]] && {
all_cmake_vars+=(-DCMAKE_C_COMPILER="$CI_CC") all_cmake_vars+=("-DCMAKE_C_COMPILER=$CI_CC")
} }
[[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && {
[[ $CI_SANITIZERS ]] && CI_CC_FLAGS+="${CI_CC_FLAGS:+" "}-fsanitize=$CI_SANITIZERS" [[ $CI_SANITIZERS ]] && CI_CC_FLAGS+="${CI_CC_FLAGS:+" "}-fsanitize=$CI_SANITIZERS"
all_cmake_vars+=(-DCMAKE_C_FLAGS="$CI_CC_FLAGS") all_cmake_vars+=("-DCMAKE_C_FLAGS=$CI_CC_FLAGS")
} }
[[ $CI_AR ]] && { [[ $CI_AR ]] && {
all_cmake_vars+=(-DCMAKE_AR="$CI_AR") all_cmake_vars+=("-DCMAKE_AR=$CI_AR")
} }
[[ $CI_RANLIB ]] && { [[ $CI_RANLIB ]] && {
all_cmake_vars+=(-DCMAKE_RANLIB="$CI_RANLIB") all_cmake_vars+=("-DCMAKE_RANLIB=$CI_RANLIB")
} }
all_cmake_vars+=(-DCMAKE_BUILD_TYPE="$CI_CMAKE_BUILD_TYPE") all_cmake_vars+=("-DCMAKE_BUILD_TYPE=$CI_CMAKE_BUILD_TYPE")
all_cmake_vars+=(-DCMAKE_VERBOSE_MAKEFILE=ON) all_cmake_vars+=("-DCMAKE_VERBOSE_MAKEFILE=ON")
all_cmake_vars+=($CI_CMAKE_VARS) all_cmake_vars+=($CI_CMAKE_VARS)
all_cmake_build_flags+=($CI_CMAKE_BUILD_FLAGS) all_cmake_build_flags+=($CI_CMAKE_BUILD_FLAGS)
all_ctest_flags+=($CI_CTEST_FLAGS) all_ctest_flags+=($CI_CTEST_FLAGS)

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"
@ -97,33 +97,33 @@ function ci_build {
all_make_flags+=($CI_MAKE_FLAGS) all_make_flags+=($CI_MAKE_FLAGS)
} }
[[ $CI_CC ]] && { [[ $CI_CC ]] && {
all_make_vars+=(CC="$CI_CC") all_make_vars+=("CC=$CI_CC")
} }
[[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && {
[[ $CI_SANITIZERS ]] && CI_CC_FLAGS="${CI_CC_FLAGS:-"-O2"} -fsanitize=$CI_SANITIZERS" [[ $CI_SANITIZERS ]] && CI_CC_FLAGS="${CI_CC_FLAGS:-"-O2"} -fsanitize=$CI_SANITIZERS"
all_make_vars+=(CFLAGS="$CI_CC_FLAGS") all_make_vars+=("CFLAGS=$CI_CC_FLAGS")
} }
[[ $CI_CPP ]] && { [[ $CI_CPP ]] && {
all_make_vars+=(CPP="$CI_CPP") all_make_vars+=("CPP=$CI_CPP")
} }
[[ $CI_CPP_FLAGS ]] && { [[ $CI_CPP_FLAGS ]] && {
all_make_vars+=(CPPFLAGS="$CI_CPP_FLAGS") all_make_vars+=("CPPFLAGS=$CI_CPP_FLAGS")
} }
[[ $CI_AR ]] && { [[ $CI_AR ]] && {
all_make_vars+=(AR="$CI_AR") all_make_vars+=("AR=$CI_AR")
} }
[[ $CI_RANLIB ]] && { [[ $CI_RANLIB ]] && {
all_make_vars+=(RANLIB="$CI_RANLIB") all_make_vars+=("RANLIB=$CI_RANLIB")
} }
[[ $CI_LD ]] && { [[ $CI_LD ]] && {
all_make_vars+=(LD="$CI_LD") all_make_vars+=("LD=$CI_LD")
} }
[[ $CI_LD_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_LD_FLAGS || $CI_SANITIZERS ]] && {
[[ $CI_SANITIZERS ]] && CI_LD_FLAGS+="${CI_LD_FLAGS:+" "}-fsanitize=$CI_SANITIZERS" [[ $CI_SANITIZERS ]] && CI_LD_FLAGS+="${CI_LD_FLAGS:+" "}-fsanitize=$CI_SANITIZERS"
all_make_vars+=(LDFLAGS="$CI_LD_FLAGS") all_make_vars+=("LDFLAGS=$CI_LD_FLAGS")
} }
[[ $CI_LIBS ]] && { [[ $CI_LIBS ]] && {
all_make_vars+=(LIBS="$CI_LIBS") all_make_vars+=("LIBS=$CI_LIBS")
} }
all_make_vars+=($CI_MAKE_VARS) all_make_vars+=($CI_MAKE_VARS)
# And... build! # And... build!

View File

@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# shellcheck source="ci/lib/ci.lib.sh" # shellcheck source=ci/lib/ci.lib.sh
source "$(dirname "$0")/lib/ci.lib.sh" source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR" cd "$CI_TOPLEVEL_DIR"