mirror of
https://github.com/super-linter/super-linter.git
synced 2025-01-09 16:04:53 -05:00
commit
3c9fe51715
3 changed files with 157 additions and 57 deletions
10
Dockerfile
10
Dockerfile
|
@ -306,11 +306,6 @@ ENV PATH="$PATH":"$GOROOT"/bin:"$GOPATH"/bin
|
||||||
RUN mkdir -p ${GOPATH}/src ${GOPATH}/bin
|
RUN mkdir -p ${GOPATH}/src ${GOPATH}/bin
|
||||||
RUN go get mvdan.cc/sh/v3/cmd/shfmt
|
RUN go get mvdan.cc/sh/v3/cmd/shfmt
|
||||||
|
|
||||||
#############################
|
|
||||||
# Bootstrap npm-groovy-lint #
|
|
||||||
#############################
|
|
||||||
RUN npm-groovy-lint --version
|
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Load GitHub Env Vars for GitHub Actions #
|
# Load GitHub Env Vars for GitHub Actions #
|
||||||
###########################################
|
###########################################
|
||||||
|
@ -395,6 +390,11 @@ COPY lib /action/lib
|
||||||
##################################
|
##################################
|
||||||
COPY TEMPLATES /action/lib/.automation
|
COPY TEMPLATES /action/lib/.automation
|
||||||
|
|
||||||
|
###################################
|
||||||
|
# Run to build file with versions #
|
||||||
|
###################################
|
||||||
|
RUN /action/lib/linterVersions.sh
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# Set the entrypoint #
|
# Set the entrypoint #
|
||||||
######################
|
######################
|
||||||
|
|
|
@ -128,19 +128,12 @@ TERRAFORM_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TERRAFORM_FILE_NAME}" # Path
|
||||||
TYPESCRIPT_FILE_NAME="${TYPESCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
TYPESCRIPT_FILE_NAME="${TYPESCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
||||||
TYPESCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TYPESCRIPT_FILE_NAME}" # Path to the Typescript lint rules
|
TYPESCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TYPESCRIPT_FILE_NAME}" # Path to the Typescript lint rules
|
||||||
TYPESCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
TYPESCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
||||||
|
# Version File info
|
||||||
|
VERSION_FILE='/action/lib/linter-versions.txt' # File to store linter versions
|
||||||
# YAML Vars
|
# YAML Vars
|
||||||
YAML_FILE_NAME="${YAML_CONFIG_FILE:-.yaml-lint.yml}" # Name of the file
|
YAML_FILE_NAME="${YAML_CONFIG_FILE:-.yaml-lint.yml}" # Name of the file
|
||||||
YAML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${YAML_FILE_NAME}" # Path to the yaml lint rules
|
YAML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${YAML_FILE_NAME}" # Path to the yaml lint rules
|
||||||
|
|
||||||
#######################################
|
|
||||||
# Linter array for information prints #
|
|
||||||
#######################################
|
|
||||||
LINTER_ARRAY=('ansible-lint' 'arm-ttk' 'asl-validator' 'bash-exec' 'black' 'cfn-lint' 'checkstyle' 'chktex' 'clj-kondo' 'coffeelint'
|
|
||||||
'dotnet-format' 'dart' 'dockerfilelint' 'dotenv-linter' 'editorconfig-checker' 'eslint' 'flake8' 'golangci-lint'
|
|
||||||
'hadolint' 'htmlhint' 'jsonlint' 'ktlint' 'lintr' 'lua' 'markdownlint' 'npm-groovy-lint' 'perl' 'protolint'
|
|
||||||
'pwsh' 'pylint' 'raku' 'rubocop' 'shellcheck' 'shfmt' 'spectral' 'standard' 'stylelint' 'sql-lint'
|
|
||||||
'terrascan' 'tflint' 'xmllint' 'yamllint')
|
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
# Language array for prints #
|
# Language array for prints #
|
||||||
#############################
|
#############################
|
||||||
|
@ -459,33 +452,10 @@ GetLinterVersions() {
|
||||||
debug "---------------------------------------------"
|
debug "---------------------------------------------"
|
||||||
debug "Linter Version Info:"
|
debug "Linter Version Info:"
|
||||||
|
|
||||||
##########################################################
|
################################
|
||||||
# Go through the array of linters and print version info #
|
# Cat the linter versions file #
|
||||||
##########################################################
|
################################
|
||||||
for LINTER in "${LINTER_ARRAY[@]}"; do
|
CAT_CMD=$(cat "${VERSION_FILE}" 2>&1)
|
||||||
####################
|
|
||||||
# Get the versions #
|
|
||||||
####################
|
|
||||||
if [[ ${LINTER} == "arm-ttk" ]]; then
|
|
||||||
# Need specific command for ARM
|
|
||||||
mapfile -t GET_VERSION_CMD < <(grep -iE 'version' "${ARM_TTK_PSD1}" | xargs 2>&1)
|
|
||||||
elif [[ ${LINTER} == "protolint" ]] || [[ ${LINTER} == "editorconfig-checker" ]] || [[ ${LINTER} == "bash-exec" ]]; then
|
|
||||||
# Need specific command for Protolint and editorconfig-checker
|
|
||||||
mapfile -t GET_VERSION_CMD < <(echo "--version not supported")
|
|
||||||
elif [[ ${LINTER} == "lintr" ]]; then
|
|
||||||
# Need specific command for lintr (--slave is deprecated in R 4.0 and replaced by --no-echo)
|
|
||||||
mapfile -t 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} == "lua" ]]; then
|
|
||||||
# Semi standardversion command
|
|
||||||
mapfile -t GET_VERSION_CMD < <("${LINTER}" -v 2>&1)
|
|
||||||
elif [[ ${LINTER} == "terrascan" ]]; then
|
|
||||||
mapfile -t GET_VERSION_CMD < <("${LINTER}" version 2>&1)
|
|
||||||
else
|
|
||||||
# Standard version command
|
|
||||||
mapfile -t GET_VERSION_CMD < <("${LINTER}" --version 2>&1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Load the error code #
|
# Load the error code #
|
||||||
|
@ -495,15 +465,13 @@ GetLinterVersions() {
|
||||||
##############################
|
##############################
|
||||||
# Check the shell for errors #
|
# Check the shell for errors #
|
||||||
##############################
|
##############################
|
||||||
if [ ${ERROR_CODE} -ne 0 ] || [ -z "${GET_VERSION_CMD[*]}" ]; then
|
if [ ${ERROR_CODE} -ne 0 ]; then
|
||||||
warn "[${LINTER}]: Failed to get version info for:"
|
# Failure
|
||||||
|
warn "Failed to view version file:[${VERSION_FILE}]"
|
||||||
else
|
else
|
||||||
##########################
|
# Success
|
||||||
# Print the version info #
|
debug "${CAT_CMD}"
|
||||||
##########################
|
|
||||||
debug "Successfully found version for ${F[W]}[${LINTER}]${F[B]}: ${F[W]}${GET_VERSION_CMD[*]}"
|
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# Print version footers #
|
# Print version footers #
|
||||||
|
|
132
lib/linterVersions.sh
Executable file
132
lib/linterVersions.sh
Executable file
|
@ -0,0 +1,132 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
########### Super-Linter (Get the linter versions) @admiralawkbar ##############
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# Source Function Files #
|
||||||
|
#########################
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source /action/lib/log.sh # Source the function script(s)
|
||||||
|
|
||||||
|
###########
|
||||||
|
# GLOBALS #
|
||||||
|
###########
|
||||||
|
VERSION_FILE='/action/lib/linter-versions.txt' # File to store linter versions
|
||||||
|
ARM_TTK_PSD1='/usr/bin/arm-ttk' # Powershell var
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Linter array for information prints #
|
||||||
|
#######################################
|
||||||
|
LINTER_ARRAY=('ansible-lint' 'arm-ttk' 'asl-validator' 'bash-exec' 'black' 'cfn-lint' 'checkstyle' 'chktex' 'clj-kondo' 'coffeelint'
|
||||||
|
'dotnet-format' 'dart' 'dockerfilelint' 'dotenv-linter' 'editorconfig-checker' 'eslint' 'flake8' 'golangci-lint'
|
||||||
|
'hadolint' 'htmlhint' 'jsonlint' 'ktlint' 'lintr' 'lua' 'markdownlint' 'npm-groovy-lint' 'perl' 'protolint'
|
||||||
|
'pwsh' 'pylint' 'raku' 'rubocop' 'shellcheck' 'shfmt' 'spectral' 'standard' 'stylelint' 'sql-lint'
|
||||||
|
'terrascan' 'tflint' 'xmllint' 'yamllint')
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
########################## FUNCTIONS BELOW #####################################
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
#### Function BuildLinterVersions ##############################################
|
||||||
|
BuildLinterVersions() {
|
||||||
|
#########################
|
||||||
|
# Print version headers #
|
||||||
|
#########################
|
||||||
|
info "---------------------------------------------"
|
||||||
|
info "Linter Version Info:"
|
||||||
|
|
||||||
|
##########################################################
|
||||||
|
# Go through the array of linters and print version info #
|
||||||
|
##########################################################
|
||||||
|
for LINTER in "${LINTER_ARRAY[@]}"; do
|
||||||
|
if [ -n "${LINTER}" ]; then
|
||||||
|
####################
|
||||||
|
# Get the versions #
|
||||||
|
####################
|
||||||
|
if [[ ${LINTER} == "arm-ttk" ]]; then
|
||||||
|
# Need specific command for ARM
|
||||||
|
mapfile -t GET_VERSION_CMD < <(grep -iE 'version' "${ARM_TTK_PSD1}" | xargs 2>&1)
|
||||||
|
elif [[ ${LINTER} == "protolint" ]] || [[ ${LINTER} == "editorconfig-checker" ]] || [[ ${LINTER} == "bash-exec" ]]; then
|
||||||
|
# Need specific command for Protolint and editorconfig-checker
|
||||||
|
mapfile -t GET_VERSION_CMD < <(echo "--version not supported")
|
||||||
|
elif [[ ${LINTER} == "lintr" ]]; then
|
||||||
|
# Need specific command for lintr (--slave is deprecated in R 4.0 and replaced by --no-echo)
|
||||||
|
mapfile -t 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} == "lua" ]]; then
|
||||||
|
# Semi standardversion command
|
||||||
|
mapfile -t GET_VERSION_CMD < <("${LINTER}" -v 2>&1)
|
||||||
|
elif [[ ${LINTER} == "terrascan" ]]; then
|
||||||
|
mapfile -t GET_VERSION_CMD < <("${LINTER}" version 2>&1)
|
||||||
|
elif [[ ${LINTER} == "checkstyle" ]]; then
|
||||||
|
mapfile -t GET_VERSION_CMD < <("java -jar /usr/bin/${LINTER}" --version 2>&1)
|
||||||
|
else
|
||||||
|
# Standard version command
|
||||||
|
mapfile -t GET_VERSION_CMD < <("${LINTER}" --version 2>&1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Load the error code #
|
||||||
|
#######################
|
||||||
|
ERROR_CODE=$?
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# Check the shell for errors #
|
||||||
|
##############################
|
||||||
|
if [ ${ERROR_CODE} -ne 0 ] || [ -z "${GET_VERSION_CMD[*]}" ]; then
|
||||||
|
warn "[${LINTER}]: Failed to get version info for:"
|
||||||
|
WriteFile "${LINTER}" "Failed to get version info"
|
||||||
|
else
|
||||||
|
##########################
|
||||||
|
# Print the version info #
|
||||||
|
##########################
|
||||||
|
info "Successfully found version for ${F[W]}[${LINTER}]${F[B]}: ${F[W]}${GET_VERSION_CMD[*]}"
|
||||||
|
WriteFile "${LINTER}" "${GET_VERSION_CMD[*]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# Print version footers #
|
||||||
|
#########################
|
||||||
|
info "---------------------------------------------"
|
||||||
|
}
|
||||||
|
################################################################################
|
||||||
|
#### Function WriteFile ########################################################
|
||||||
|
WriteFile() {
|
||||||
|
##############
|
||||||
|
# Read Input #
|
||||||
|
##############
|
||||||
|
LINTER="$1" # Name of the linter
|
||||||
|
VERSION="$2" # Version returned from check
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Write the data to output file #
|
||||||
|
#################################
|
||||||
|
echo "${LINTER}: ${VERSION}" >> "${VERSION_FILE}" 2>&1
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Load the error code #
|
||||||
|
#######################
|
||||||
|
ERROR_CODE=$?
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# Check the shell for errors #
|
||||||
|
##############################
|
||||||
|
if [ $ERROR_CODE -ne 0 ]; then
|
||||||
|
fatal "Failed to write data to file!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
################################################################################
|
||||||
|
############################### MAIN ###########################################
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# BuildLinterVersions #
|
||||||
|
#######################
|
||||||
|
BuildLinterVersions
|
Loading…
Reference in a new issue