2023-03-16 09:24:53 -04:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2023-03-29 08:13:26 -04:00
|
|
|
###### script header ######
|
|
|
|
|
2023-03-16 09:24:53 -04:00
|
|
|
lib=$(realpath @@BASE_LIB@@) || exit 1
|
2023-03-29 08:13:26 -04:00
|
|
|
stat "${lib}" >> /dev/null || exit 1
|
2023-03-16 09:24:53 -04:00
|
|
|
|
|
|
|
# shellcheck source=../sh/lib.bash
|
|
|
|
if ! source "${lib}"; then
|
|
|
|
echo "Error: could not find import"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2023-03-29 08:13:26 -04:00
|
|
|
shfmt=$(realpath @@SHFMT@@)
|
|
|
|
stat "${shfmt}" >> /dev/null
|
|
|
|
shellcheck=$(realpath @@SHELLCHECK@@)
|
|
|
|
stat "${shellcheck}" >> /dev/null
|
|
|
|
|
|
|
|
cd "${BUILD_WORKSPACE_DIRECTORY}"
|
|
|
|
|
|
|
|
###### script body ######
|
2023-03-16 09:24:53 -04:00
|
|
|
|
|
|
|
scriptsStr=$(${shfmt} -f "${BUILD_WORKSPACE_DIRECTORY}")
|
|
|
|
readarray -t <<< "${scriptsStr}"
|
|
|
|
scripts=("${MAPFILE[@]}")
|
|
|
|
|
|
|
|
excludeDirs=(
|
|
|
|
"cli/internal/helm/charts/cilium"
|
|
|
|
"build"
|
2023-03-28 07:38:20 -04:00
|
|
|
"docs/node_modules"
|
2023-03-16 09:24:53 -04:00
|
|
|
)
|
|
|
|
|
2023-05-22 06:54:38 -04:00
|
|
|
excludeFiles=(
|
|
|
|
"bazel/bazel-complete.bash"
|
|
|
|
)
|
|
|
|
|
|
|
|
echo "The following scripts are excluded by their directory and won't be linted with shellcheck:"
|
2023-03-16 09:24:53 -04:00
|
|
|
for exclude in "${excludeDirs[@]}"; do
|
|
|
|
for i in "${!scripts[@]}"; do
|
|
|
|
if [[ ${scripts[i]} == "${BUILD_WORKSPACE_DIRECTORY}/${exclude}"* ]]; then
|
|
|
|
echo " ${scripts[i]}"
|
|
|
|
unset 'scripts[i]'
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
2023-05-22 06:54:38 -04:00
|
|
|
echo "The following scripts are excluded and won't be linted with shellcheck:"
|
|
|
|
for exclude in "${excludeFiles[@]}"; do
|
|
|
|
for i in "${!scripts[@]}"; do
|
|
|
|
if [[ ${scripts[i]} == "${BUILD_WORKSPACE_DIRECTORY}/${exclude}" ]]; then
|
|
|
|
echo " ${scripts[i]}"
|
|
|
|
unset 'scripts[i]'
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
2023-03-16 09:24:53 -04:00
|
|
|
echo "Linting the following scripts with shellcheck:"
|
|
|
|
for script in "${scripts[@]}"; do
|
|
|
|
echo " ${script}"
|
|
|
|
done
|
|
|
|
|
|
|
|
statuscode=0
|
|
|
|
for file in "${scripts[@]}"; do
|
|
|
|
${shellcheck} --severity=info "${file}" || statuscode=$?
|
|
|
|
done
|
|
|
|
|
|
|
|
exit "${statuscode}"
|