mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-29 09:30:58 -05:00
5219feefab
- Remove the SKIP_FLAG variable and check for the length of the arrays of files to lint directly. - Remove the LIST_FILES variable, and use the FILE_ARRAY variable directly. - Remove the corner case for RENOVATE because renovate-config-validator supports passing the path to the file to lint using an argument as the default case does. - Remove the corner case for ANSIBLE not having 'bad' tests because it has them now. - Set TF_DATA_DIR to avoid any modification to any existing Terraform data directory that users might have in their workspace. - Aggregate GO_MODULES and ANSIBLE corner cases because they are the same. - Remove the corner case for ANSIBLE to add a trailing slash to TEST_CASE_FOLDER (similar reason as the previous point about ANSIBLE corner case). - Simplify log messages by removing color markers because they are already handled in log.sh. - Simplify linterVersions by removing redundant checks and functions. - Avoid printing debug logs in the versions file.
91 lines
3.7 KiB
Bash
Executable file
91 lines
3.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
GetLinterVersions() {
|
|
debug "WRITE_LINTER_VERSIONS_FILE: ${WRITE_LINTER_VERSIONS_FILE}"
|
|
|
|
if [ "${WRITE_LINTER_VERSIONS_FILE}" = "true" ]; then
|
|
debug "Building linter version file: ${VERSION_FILE}"
|
|
if BuildLinterVersions "${VERSION_FILE}" "${LINTER_NAMES_ARRAY[@]}"; then
|
|
info "Linter version file built correctly."
|
|
exit
|
|
else
|
|
fatal "Error while building the versions file."
|
|
fi
|
|
else
|
|
debug "Skipping versions file build..."
|
|
fi
|
|
|
|
if ! cat "${VERSION_FILE}"; then
|
|
fatal "Failed to view version file: ${VERSION_FILE}."
|
|
fi
|
|
}
|
|
################################################################################
|
|
#### Function BuildLinterVersions ##############################################
|
|
BuildLinterVersions() {
|
|
VERSION_FILE="${1}" && shift
|
|
LINTER_ARRAY=("$@")
|
|
|
|
# Start with an empty file. We might have built this file in a previous build
|
|
# stage, so we start fresh here.
|
|
rm -rfv "${VERSION_FILE}"
|
|
|
|
debug "Building linter version file ${VERSION_FILE} for the following linters: ${LINTER_ARRAY[*]}..."
|
|
|
|
##########################################################
|
|
# Go through the array of linters and print version info #
|
|
##########################################################
|
|
for LINTER in "${LINTER_ARRAY[@]}"; do
|
|
if [ -n "${LINTER}" ]; then
|
|
|
|
# Some linters need to account for special commands to get their version
|
|
|
|
if [[ ${LINTER} == "arm-ttk" ]]; then
|
|
GET_VERSION_CMD="$(grep -iE 'version' "/usr/bin/arm-ttk" | xargs 2>&1)"
|
|
# Some linters don't support a "get version" command
|
|
elif [[ ${LINTER} == "bash-exec" ]] || [[ ${LINTER} == "gherkin-lint" ]]; then
|
|
GET_VERSION_CMD="Version command not supported"
|
|
elif [[ ${LINTER} == "checkstyle" ]] || [[ ${LINTER} == "google-java-format" ]]; then
|
|
GET_VERSION_CMD="$(java -jar "/usr/bin/${LINTER}" --version 2>&1)"
|
|
elif [[ ${LINTER} == "clippy" ]]; then
|
|
GET_VERSION_CMD="$(cargo-clippy --version 2>&1)"
|
|
elif [[ ${LINTER} == "editorconfig-checker" ]]; then
|
|
GET_VERSION_CMD="$(${LINTER} -version)"
|
|
elif [[ ${LINTER} == "kubeconform" ]]; then
|
|
GET_VERSION_CMD="$(${LINTER} -v)"
|
|
elif [[ ${LINTER} == "lintr" ]]; then
|
|
# Need specific command for lintr (--slave is deprecated in R 4.0 and replaced by --no-echo)
|
|
GET_VERSION_CMD="$(R --slave -e "r_ver <- R.Version()\$version.string; \
|
|
lintr_ver <- packageVersion('lintr'); \
|
|
glue::glue('lintr { lintr_ver } on { r_ver }')")"
|
|
elif [[ ${LINTER} == "protolint" ]] || [[ ${LINTER} == "gitleaks" ]]; then
|
|
GET_VERSION_CMD="$(${LINTER} version)"
|
|
elif [[ ${LINTER} == "lua" ]]; then
|
|
GET_VERSION_CMD="$("${LINTER}" -v 2>&1)"
|
|
elif [[ ${LINTER} == "renovate-config-validator" ]]; then
|
|
GET_VERSION_CMD="$(renovate --version 2>&1)"
|
|
elif [[ ${LINTER} == "terrascan" ]]; then
|
|
GET_VERSION_CMD="$("${LINTER}" version 2>&1)"
|
|
else
|
|
# Unset TF_LOG_LEVEL so that the version file doesn't contain debug log when running
|
|
# commands that read TF_LOG_LEVEL or TFLINT_LOG, which are likely set to DEBUG when
|
|
# building the versions file
|
|
GET_VERSION_CMD="$(
|
|
unset TF_LOG_LEVEL
|
|
unset TFLINT_LOG
|
|
"${LINTER}" --version 2>&1
|
|
)"
|
|
fi
|
|
|
|
ERROR_CODE=$?
|
|
|
|
if [ ${ERROR_CODE} -ne 0 ]; then
|
|
fatal "[${LINTER}]: Failed to get version info. Exit code: ${ERROR_CODE}. Output: ${GET_VERSION_CMD}"
|
|
else
|
|
info "Successfully found version for ${LINTER}: ${GET_VERSION_CMD}"
|
|
if ! echo "${LINTER}: ${GET_VERSION_CMD}" >>"${VERSION_FILE}" 2>&1; then
|
|
fatal "Failed to write data to file!"
|
|
fi
|
|
fi
|
|
fi
|
|
done
|
|
}
|