2020-06-29 10:55:59 -04:00
#!/usr/bin/env bash
2023-05-22 20:30:16 -04:00
function IssueHintForFullGitHistory( ) {
info "Check that you have the full git history, the checkout is not shallow, etc"
2023-12-04 04:47:49 -05:00
info " Is shallow repository: $( git -C " ${ GITHUB_WORKSPACE } " rev-parse --is-shallow-repository) "
2023-08-17 11:12:11 -04:00
info "See https://github.com/super-linter/super-linter#example-connecting-github-action-workflow"
2023-05-22 20:30:16 -04:00
}
2021-03-02 09:29:12 -05:00
function GenerateFileDiff( ) {
2023-12-23 13:33:53 -05:00
DIFF_GIT_DEFAULT_BRANCH_CMD = " git -C \" ${ GITHUB_WORKSPACE } \" diff --diff-filter=d --name-only ${ DEFAULT_BRANCH } ... ${ GITHUB_SHA } | xargs -I % sh -c 'echo \" ${ GITHUB_WORKSPACE } /%\"' 2>&1 "
DIFF_TREE_CMD = " git -C \" ${ GITHUB_WORKSPACE } \" diff-tree --no-commit-id --name-only -r ${ GITHUB_SHA } ${ GITHUB_BEFORE_SHA } | xargs -I % sh -c 'echo \" ${ GITHUB_WORKSPACE } /%\"' 2>&1 "
if [ " ${ GITHUB_EVENT_NAME :- } " = = "push" ] ; then
RunFileDiffCommand " ${ DIFF_TREE_CMD } "
if [ ${# RAW_FILE_ARRAY [@] } -eq 0 ] ; then
debug "----------------------------------------------"
debug "Generating the file array with diff-tree produced [0] items, trying with git diff against the default branch..."
RunFileDiffCommand " ${ DIFF_GIT_DEFAULT_BRANCH_CMD } "
fi
else
RunFileDiffCommand " ${ DIFF_GIT_DEFAULT_BRANCH_CMD } "
fi
}
function RunFileDiffCommand( ) {
2021-03-02 09:29:12 -05:00
CMD = " ${ 1 } "
debug " Generating Diff with:[ $CMD ] "
#################################################
# Get the Array of files changed in the commits #
#################################################
2023-12-04 04:47:49 -05:00
CMD_OUTPUT = $( eval " set -eo pipefail; $CMD ; set +eo pipefail " )
2021-03-02 09:29:12 -05:00
#######################
# Load the error code #
#######################
ERROR_CODE = $?
2023-12-04 04:47:49 -05:00
debug " Diff command return code: ${ ERROR_CODE } "
2021-03-02 09:29:12 -05:00
##############################
# Check the shell for errors #
##############################
if [ ${ ERROR_CODE } -ne 0 ] ; then
2023-12-04 04:47:49 -05:00
error " Failed to get Diff with:[ $CMD ] "
2023-05-22 20:30:16 -04:00
IssueHintForFullGitHistory
2023-12-04 04:47:49 -05:00
fatal " [Diff command output: ${ CMD_OUTPUT } ] "
2021-03-02 09:29:12 -05:00
fi
###################################################
# Map command output to an array to proper handle #
###################################################
2021-03-05 12:25:31 -05:00
mapfile -t RAW_FILE_ARRAY < <( echo -n " $CMD_OUTPUT " )
2021-03-02 09:29:12 -05:00
debug " RAW_FILE_ARRAY contents: ${ RAW_FILE_ARRAY [*] } "
}
2020-07-01 17:40:40 -04:00
function BuildFileList( ) {
2020-10-03 06:55:34 -04:00
debug "Building file list..."
2020-06-29 10:55:59 -04:00
################
2020-10-03 06:55:34 -04:00
# Pull in vars #
2020-06-29 10:55:59 -04:00
################
2020-10-03 06:55:34 -04:00
VALIDATE_ALL_CODEBASE = " ${ 1 } "
2021-12-08 15:28:30 -05:00
debug " VALIDATE_ALL_CODEBASE: ${ VALIDATE_ALL_CODEBASE } "
2020-10-03 06:55:34 -04:00
2020-10-14 04:59:34 -04:00
TEST_CASE_RUN = " ${ 2 } "
2021-12-08 15:28:30 -05:00
debug " TEST_CASE_RUN: ${ TEST_CASE_RUN } "
2020-10-14 04:59:34 -04:00
2020-12-04 17:04:09 -05:00
ANSIBLE_DIRECTORY = " ${ 3 } "
2021-12-08 15:28:30 -05:00
debug " ANSIBLE_DIRECTORY: ${ ANSIBLE_DIRECTORY } "
2020-12-04 17:04:09 -05:00
2020-10-14 04:59:34 -04:00
if [ " ${ VALIDATE_ALL_CODEBASE } " = = "false" ] && [ " ${ TEST_CASE_RUN } " != "true" ] ; then
2021-03-05 09:57:16 -05:00
debug "----------------------------------------------"
2023-12-04 04:47:49 -05:00
debug "Build the list of all changed files"
2021-03-05 09:57:16 -05:00
2023-12-23 13:33:53 -05:00
GenerateFileDiff
2020-10-03 06:55:34 -04:00
else
2020-10-14 04:59:34 -04:00
WORKSPACE_PATH = " ${ GITHUB_WORKSPACE } "
2020-10-19 17:15:04 -04:00
if [ " ${ TEST_CASE_RUN } " = = "true" ] ; then
2020-11-06 17:10:09 -05:00
WORKSPACE_PATH = " ${ GITHUB_WORKSPACE } / ${ TEST_CASE_FOLDER } "
2020-10-14 04:59:34 -04:00
fi
2021-06-08 11:40:59 -04:00
#############################
# Use the find on all files #
#############################
if [ " ${ USE_FIND_ALGORITHM } " = = 'true' ] ; then
################
# print header #
################
debug "----------------------------------------------"
debug " Populating the file list with all the files in the ${ WORKSPACE_PATH } workspace using FIND algorithm "
mapfile -t RAW_FILE_ARRAY < <( find " ${ WORKSPACE_PATH } " \
-not \( -path '*/\.git' -prune \) \
-not \( -path '*/\.pytest_cache' -prune \) \
-not \( -path '*/\.rbenv' -prune \) \
-not \( -path '*/\.terragrunt-cache' -prune \) \
-not \( -path '*/\.venv' -prune \) \
-not \( -path '*/\__pycache__' -prune \) \
-not \( -path '*/\node_modules' -prune \) \
-not -name ".DS_Store" \
-not -name "*.gif" \
-not -name "*.ico" \
-not -name "*.jpg" \
-not -name "*.jpeg" \
-not -name "*.pdf" \
-not -name "*.png" \
-not -name "*.webp" \
-not -name "*.woff" \
-not -name "*.woff2" \
-not -name "*.zip" \
-type f \
2>& 1 | sort)
else
debug "----------------------------------------------"
2023-12-23 13:33:53 -05:00
DIFF_GIT_VALIDATE_ALL_CODEBASE = " git -C \" ${ WORKSPACE_PATH } \" ls-tree -r --name-only HEAD | xargs -I % sh -c \"echo ${ WORKSPACE_PATH } /%\" 2>&1 "
debug " Populating the file list with: ${ DIFF_GIT_VALIDATE_ALL_CODEBASE } "
mapfile -t RAW_FILE_ARRAY < <( eval " set -eo pipefail; ${ DIFF_GIT_VALIDATE_ALL_CODEBASE } ; set +eo pipefail " )
2021-06-08 11:40:59 -04:00
debug " RAW_FILE_ARRAY contents: ${ RAW_FILE_ARRAY [*] } "
fi
2020-06-29 10:55:59 -04:00
fi
#######################
# Load the error code #
#######################
ERROR_CODE = $?
##############################
# Check the shell for errors #
##############################
2020-07-21 13:09:07 -04:00
if [ ${ ERROR_CODE } -ne 0 ] ; then
2020-11-05 10:10:49 -05:00
fatal " Failed to gain a list of all files changed! Error code: ${ ERROR_CODE } "
2020-06-29 10:55:59 -04:00
fi
2020-10-14 11:31:55 -04:00
##########################################################################
# Check to make sure the raw file array is not empty or throw a warning! #
##########################################################################
if [ ${# RAW_FILE_ARRAY [@] } -eq 0 ] ; then
###############################
# No files were found to lint #
###############################
warn " No files were found in the GITHUB_WORKSPACE:[ ${ GITHUB_WORKSPACE } ] to lint! "
fi
2020-10-14 04:59:34 -04:00
2022-03-14 15:47:04 -04:00
#########################################
# Check if the Ansible directory exists #
#########################################
if [ -d " ${ ANSIBLE_DIRECTORY } " ] ; then
debug " Adding ANSIBLE_DIRECTORY ( ${ ANSIBLE_DIRECTORY } ) to the list of files and directories to lint. "
FILE_ARRAY_ANSIBLE += ( " ${ ANSIBLE_DIRECTORY } " )
else
debug " ANSIBLE_DIRECTORY ( ${ ANSIBLE_DIRECTORY } ) does NOT exist. "
fi
2023-12-22 07:22:15 -05:00
if CheckovConfigurationFileContainsDirectoryOption " ${ CHECKOV_LINTER_RULES } " ; then
debug "No need to configure the directories to check for Checkov."
else
debug "Checking if we are in test mode before configuring the list of directories to lint with Checkov"
if [ " ${ TEST_CASE_RUN } " = = "true" ] ; then
debug "We are running in test mode. Adding test case directories to the list of directories to analyze with Checkov."
FILE_ARRAY_CHECKOV += ( " ${ DEFAULT_CHECKOV_TEST_CASE_DIRECTORY } /bad " )
FILE_ARRAY_CHECKOV += ( " ${ DEFAULT_CHECKOV_TEST_CASE_DIRECTORY } /good " )
else
debug " We are not running in test mode ( ${ TEST_CASE_RUN } ). Adding ${ GITHUB_WORKSPACE } to the list of directories to analyze with Checkov. "
FILE_ARRAY_CHECKOV += ( " ${ GITHUB_WORKSPACE } " )
fi
fi
2020-06-29 10:55:59 -04:00
################################################
# Iterate through the array of all files found #
################################################
2020-10-03 06:55:34 -04:00
info "---------------------------------"
info "------ File list to check: ------"
info "---------------------------------"
2020-07-01 17:40:40 -04:00
for FILE in " ${ RAW_FILE_ARRAY [@] } " ; do
2023-12-16 03:30:33 -05:00
# Get the file extension
2020-08-31 17:44:35 -04:00
FILE_TYPE = " $( GetFileExtension " $FILE " ) "
2023-12-16 03:30:33 -05:00
# Get the name of the file (lowercase) and the containing directory path
2020-08-13 13:40:21 -04:00
BASE_FILE = $( basename " ${ FILE ,, } " )
2023-12-16 03:30:33 -05:00
FILE_DIR_NAME = " $( dirname " ${ FILE } " ) "
2020-06-29 10:55:59 -04:00
2020-07-06 09:29:36 -04:00
##############
# Print file #
##############
2023-12-16 03:30:33 -05:00
debug " FILE: ${ FILE } , FILE_TYPE: ${ FILE_TYPE } , BASE_FILE: ${ BASE_FILE } , FILE_DIR_NAME: ${ FILE_DIR_NAME } "
2020-06-29 10:55:59 -04:00
2020-11-10 11:02:03 -05:00
##########################################################
# Check if the file exists on the filesystem, or skip it #
##########################################################
if [ ! -f " ${ FILE } " ] ; then
# File not found in workspace
2021-01-12 13:55:02 -05:00
warn " File:{ $FILE } existed in commit data, but not found on file system, skipping... "
2020-11-10 11:02:03 -05:00
continue
fi
2020-10-14 04:59:34 -04:00
########################################################
# Don't include test cases if not running in test mode #
########################################################
if [ [ ${ FILE } = = *" ${ TEST_CASE_FOLDER } " * ] ] && [ " ${ TEST_CASE_RUN } " != "true" ] ; then
debug " TEST_CASE_RUN ( ${ TEST_CASE_RUN } ) is not true. Skipping ${ FILE } ... "
continue
##################################################
# Include test cases if not running in test mode #
##################################################
elif [ [ ${ FILE } != *" ${ TEST_CASE_FOLDER } " * ] ] && [ " ${ TEST_CASE_RUN } " = = "true" ] ; then
debug " TEST_CASE_RUN ( ${ TEST_CASE_RUN } ) is true. Skipping ${ FILE } ... "
fi
2021-06-28 08:59:11 -04:00
###############################################
2021-02-03 10:52:12 -05:00
# Filter files if FILTER_REGEX_INCLUDE is set #
2021-06-28 08:59:11 -04:00
###############################################
2021-02-03 10:52:12 -05:00
if [ [ -n " $FILTER_REGEX_INCLUDE " ] ] && [ [ ! ( ${ FILE } = ~ $FILTER_REGEX_INCLUDE ) ] ] ; then
debug " FILTER_REGEX_INCLUDE didn't match. Skipping ${ FILE } "
continue
fi
2021-06-28 08:59:11 -04:00
###############################################
2021-02-03 10:52:12 -05:00
# Filter files if FILTER_REGEX_EXCLUDE is set #
2021-06-28 08:59:11 -04:00
###############################################
2021-02-03 10:52:12 -05:00
if [ [ -n " $FILTER_REGEX_EXCLUDE " ] ] && [ [ ${ FILE } = ~ $FILTER_REGEX_EXCLUDE ] ] ; then
debug " FILTER_REGEX_EXCLUDE match. Skipping ${ FILE } "
continue
fi
2021-06-28 08:59:11 -04:00
###################################################
# Filter files if FILTER_REGEX_EXCLUDE is not set #
###################################################
2023-12-06 02:32:46 -05:00
if [ " ${ IGNORE_GITIGNORED_FILES } " = = "true" ] && git -C " ${ GITHUB_WORKSPACE } " check-ignore " $FILE " ; then
2021-02-18 13:15:50 -05:00
debug " ${ FILE } is ignored by Git. Skipping ${ FILE } "
continue
fi
2021-06-28 08:59:11 -04:00
#########################################
# Filter files with at-generated marker #
#########################################
if [ " ${ IGNORE_GENERATED_FILES } " = = "true" ] && IsGenerated " $FILE " ; then
debug " ${ FILE } is generated. Skipping ${ FILE } "
continue
fi
2020-10-02 18:33:01 -04:00
# Editorconfig-checker should check every file
FILE_ARRAY_EDITORCONFIG += ( " ${ FILE } " )
2022-03-14 10:22:23 -04:00
2022-12-11 08:48:24 -05:00
# Textlint should check every file
FILE_ARRAY_NATURAL_LANGUAGE += ( " ${ FILE } " )
2022-03-14 10:22:23 -04:00
if [ " ${ VALIDATE_JSCPD_ALL_CODEBASE } " = = "true" ] ; then
debug " Not adding ${ FILE } to FILE_ARRAY_JSCPD because we're going to lint the whole codebase anyway. "
else
# jscpd also runs an all files
FILE_ARRAY_JSCPD += ( " ${ FILE } " )
fi
2021-12-08 15:28:11 -05:00
# Need to make sure we dont check the secrets paterns
# for secrets, as it will pop!
if [ " ${ BASE_FILE } " != ".gitleaks.toml" ] ; then
# GitLeaks also runs an all files
FILE_ARRAY_GITLEAKS += ( " ${ FILE } " )
fi
2020-10-02 18:33:01 -04:00
2023-09-12 12:58:09 -04:00
# See https://docs.renovatebot.com/configuration-options/
2023-09-29 16:25:37 -04:00
if [ [ " ${ BASE_FILE } " = ~ renovate.json5? ] ] ||
[ " ${ BASE_FILE } " = = ".renovaterc" ] || [ [ " ${ BASE_FILE } " = ~ .renovaterc.json5? ] ] ; then
2023-09-12 12:58:09 -04:00
FILE_ARRAY_RENOVATE += ( " ${ FILE } " )
fi
2023-09-29 16:25:37 -04:00
# See https://docs.renovatebot.com/config-presets/
IFS = "," read -r -a RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES_ARRAY <<< " ${ RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES } "
for file_name in " ${ RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES_ARRAY [@] } " ; do
if [ " ${ BASE_FILE } " = = " ${ file_name } " ] ; then
FILE_ARRAY_RENOVATE += ( " ${ FILE } " )
break
fi
done
2023-12-16 03:30:33 -05:00
if [ " ${ BASE_FILE } " = = "go.mod" ] ; then
debug " Found ${ FILE } . Checking if individual Go file linting is enabled as well. "
if [ " ${ VALIDATE_GO } " = = "true" ] ; then
debug " Checking if we are running tests. TEST_CASE_RUN: ${ TEST_CASE_RUN } "
if [ " ${ TEST_CASE_RUN } " = = "true" ] ; then
debug "Skipping the failure due to individual Go files and Go modules linting being enabled at the same time because we're in test mode."
else
fatal " Set VALIDATE_GO to false to avoid false positives due to analyzing Go files in the ${ FILE_DIR_NAME } directory individually instead of considering them in the context of a Go module. "
fi
else
debug " Considering ${ FILE_DIR_NAME } as a Go module. "
fi
FILE_ARRAY_GO_MODULES += ( " ${ FILE_DIR_NAME } " )
fi
2020-11-10 11:02:03 -05:00
#######################
2020-08-31 17:44:35 -04:00
# Get the shell files #
2020-11-10 11:02:03 -05:00
#######################
2020-08-31 17:44:35 -04:00
if IsValidShellScript " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_BASH += ( " ${ FILE } " )
2020-10-02 17:02:47 -04:00
FILE_ARRAY_BASH_EXEC += ( " ${ FILE } " )
FILE_ARRAY_SHELL_SHFMT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
#########################
# Get the CLOJURE files #
#########################
elif [ " ${ FILE_TYPE } " = = "clj" ] || [ " ${ FILE_TYPE } " = = "cljs" ] ||
[ " ${ FILE_TYPE } " = = "cljc" ] || [ " ${ FILE_TYPE } " = = "edn" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_CLOJURE += ( " ${ FILE } " )
2021-05-04 14:24:41 -04:00
#####################
# Get the C++ files #
#####################
elif [ " ${ FILE_TYPE } " = = "cpp" ] || [ " ${ FILE_TYPE } " = = "h" ] ||
[ " ${ FILE_TYPE } " = = "cc" ] || [ " ${ FILE_TYPE } " = = "hpp" ] ||
[ " ${ FILE_TYPE } " = = "cxx" ] || [ " ${ FILE_TYPE } " = = "cu" ] ||
[ " ${ FILE_TYPE } " = = "hxx" ] || [ " ${ FILE_TYPE } " = = "c++" ] ||
[ " ${ FILE_TYPE } " = = "hh" ] || [ " ${ FILE_TYPE } " = = "h++" ] ||
[ " ${ FILE_TYPE } " = = "cuh" ] || [ " ${ FILE_TYPE } " = = "c" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_CPP += ( " ${ FILE } " )
2021-07-14 15:43:10 -04:00
FILE_ARRAY_CLANG_FORMAT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
########################
# Get the COFFEE files #
########################
elif [ " ${ FILE_TYPE } " = = "coffee" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_COFFEESCRIPT += ( " ${ FILE } " )
########################
# Get the CSHARP files #
########################
elif [ " ${ FILE_TYPE } " = = "cs" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_CSHARP += ( " ${ FILE } " )
#####################
# Get the CSS files #
#####################
elif [ " ${ FILE_TYPE } " = = "css" ] || [ " ${ FILE_TYPE } " = = "scss" ] ||
[ " ${ FILE_TYPE } " = = "sass" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_CSS += ( " ${ FILE } " )
2020-07-05 22:21:13 -04:00
######################
2020-08-31 12:51:03 -04:00
# Get the DART files #
2020-07-05 22:21:13 -04:00
######################
2020-08-31 12:51:03 -04:00
elif [ " ${ FILE_TYPE } " = = "dart" ] ; then
2020-07-05 22:21:13 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_DART += ( " ${ FILE } " )
########################
# Get the DOCKER files #
########################
2020-10-03 06:55:34 -04:00
# Use BASE_FILE here because FILE_TYPE is not reliable when there is no file extension
2021-12-08 10:53:05 -05:00
elif [ [ " ${ FILE_TYPE } " != "tap" ] ] && [ [ " ${ FILE_TYPE } " != "yml" ] ] &&
2023-11-15 00:44:46 -05:00
[ [ " ${ FILE_TYPE } " != "yaml" ] ] && [ [ " ${ FILE_TYPE } " != "json" ] ] &&
[ [ " ${ FILE_TYPE } " != "xml" ] ] &&
[ [ " ${ BASE_FILE } " = ~ ^( .+\. ) ?( contain| dock) erfile$ ] ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-10-03 06:19:33 -04:00
FILE_ARRAY_DOCKERFILE_HADOLINT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
#####################
# Get the ENV files #
#####################
2021-03-10 09:38:31 -05:00
elif [ " ${ FILE_TYPE } " = = "env" ] || [ [ " ${ BASE_FILE } " = = *".env." * ] ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_ENV += ( " ${ FILE } " )
2020-11-19 10:54:20 -05:00
#########################
# Get the Gherkin files #
#########################
elif [ " ${ FILE_TYPE } " = = "feature" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_GHERKIN += ( " ${ FILE } " )
2020-06-29 10:55:59 -04:00
########################
2020-08-31 12:51:03 -04:00
# Get the Golang files #
2020-06-29 10:55:59 -04:00
########################
2020-08-31 12:51:03 -04:00
elif [ " ${ FILE_TYPE } " = = "go" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_GO += ( " ${ FILE } " )
2020-06-29 10:55:59 -04:00
########################
2020-08-31 12:51:03 -04:00
# Get the GROOVY files #
2020-06-29 10:55:59 -04:00
########################
2023-01-04 21:41:19 -05:00
# Use BASE_FILE here because FILE_TYPE is not reliable when there is no file extension
2020-08-31 12:51:03 -04:00
elif [ " $FILE_TYPE " = = "groovy" ] || [ " $FILE_TYPE " = = "jenkinsfile" ] ||
2023-01-04 21:41:19 -05:00
[ " $FILE_TYPE " = = "gradle" ] || [ " $FILE_TYPE " = = "nf" ] ||
[ [ " $BASE_FILE " = ~ .*jenkinsfile.* ] ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_GROOVY += ( " $FILE " )
######################
# Get the HTML files #
######################
elif [ " ${ FILE_TYPE } " = = "html" ] ; then
################################
# Append the file to the array #
##############################p##
FILE_ARRAY_HTML += ( " ${ FILE } " )
2020-08-05 14:35:14 -04:00
######################
# Get the Java files #
######################
elif [ " ${ FILE_TYPE } " = = "java" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_JAVA += ( " ${ FILE } " )
2021-09-28 18:09:21 -04:00
FILE_ARRAY_GOOGLE_JAVA_FORMAT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
2020-06-29 10:55:59 -04:00
############################
# Get the JavaScript files #
############################
2020-07-21 13:09:07 -04:00
elif [ " ${ FILE_TYPE } " = = "js" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-07-21 13:09:07 -04:00
FILE_ARRAY_JAVASCRIPT_ES += ( " ${ FILE } " )
FILE_ARRAY_JAVASCRIPT_STANDARD += ( " ${ FILE } " )
2021-01-04 12:07:57 -05:00
FILE_ARRAY_JAVASCRIPT_PRETTIER += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
2021-05-11 11:54:58 -04:00
#######################
# Get the JSONC files #
#######################
elif [ " $FILE_TYPE " = = "jsonc" ] || [ " $FILE_TYPE " = = "json5" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_JSONC += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
######################
# Get the JSON files #
######################
elif [ " ${ FILE_TYPE } " = = "json" ] ; then
2020-07-07 11:02:56 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_JSON += ( " ${ FILE } " )
2020-12-04 17:04:09 -05:00
2020-08-31 12:51:03 -04:00
############################
# Check if file is OpenAPI #
############################
if DetectOpenAPIFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_OPENAPI += ( " ${ FILE } " )
fi
2021-01-04 12:07:57 -05:00
########################
2020-08-31 12:51:03 -04:00
# Check if file is ARM #
2021-01-04 12:07:57 -05:00
########################
2020-08-31 12:51:03 -04:00
if DetectARMFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_ARM += ( " ${ FILE } " )
fi
#####################################
# Check if the file is CFN template #
#####################################
if DetectCloudFormationFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_CLOUDFORMATION += ( " ${ FILE } " )
fi
############################################
# Check if the file is AWS States Language #
############################################
if DetectAWSStatesFIle " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_STATES += ( " ${ FILE } " )
fi
2021-01-04 12:07:57 -05:00
#####################
# Get the JSX files #
#####################
2020-08-31 12:51:03 -04:00
elif [ " ${ FILE_TYPE } " = = "jsx" ] ; then
2020-07-07 11:02:56 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_JSX += ( " ${ FILE } " )
########################
# Get the KOTLIN files #
########################
elif [ " ${ FILE_TYPE } " = = "kt" ] || [ " ${ FILE_TYPE } " = = "kts" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_KOTLIN += ( " ${ FILE } " )
2022-03-24 16:39:52 -04:00
FILE_ARRAY_KOTLIN_ANDROID += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
#####################
# Get the LUA files #
#####################
elif [ " $FILE_TYPE " = = "lua" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_LUA += ( " $FILE " )
2020-08-18 18:54:32 -04:00
#######################
# Get the LaTeX files #
#######################
elif [ " ${ FILE_TYPE } " = = "tex" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_LATEX += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
##########################
# Get the MARKDOWN files #
##########################
elif [ " ${ FILE_TYPE } " = = "md" ] ; then
2020-08-15 18:53:08 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_MARKDOWN += ( " ${ FILE } " )
######################
# Get the PHP files #
######################
elif [ " ${ FILE_TYPE } " = = "php" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_PHP_BUILTIN += ( " ${ FILE } " )
FILE_ARRAY_PHP_PHPCS += ( " ${ FILE } " )
FILE_ARRAY_PHP_PHPSTAN += ( " ${ FILE } " )
FILE_ARRAY_PHP_PSALM += ( " ${ FILE } " )
######################
# Get the PERL files #
######################
elif [ " ${ FILE_TYPE } " = = "pl" ] || [ " ${ FILE_TYPE } " = = "pm" ] ||
[ " ${ FILE_TYPE } " = = "t" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_PERL += ( " ${ FILE } " )
############################
2020-06-29 10:55:59 -04:00
# Get the Powershell files #
2020-08-31 12:51:03 -04:00
############################
2020-10-03 06:55:34 -04:00
elif [ " ${ FILE_TYPE } " = = "ps1" ] ||
2020-11-06 17:10:09 -05:00
[ " ${ FILE_TYPE } " = = "psm1" ] ||
[ " ${ FILE_TYPE } " = = "psd1" ] ||
[ " ${ FILE_TYPE } " = = "ps1xml" ] ||
[ " ${ FILE_TYPE } " = = "pssc" ] ||
[ " ${ FILE_TYPE } " = = "psrc" ] ||
[ " ${ FILE_TYPE } " = = "cdxml" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-07-21 13:09:07 -04:00
FILE_ARRAY_POWERSHELL += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
#################################
# Get the PROTOCOL BUFFER files #
#################################
elif [ " ${ FILE_TYPE } " = = "proto" ] ; then
2020-08-24 20:43:50 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_PROTOBUF += ( " ${ FILE } " )
########################
# Get the PYTHON files #
########################
elif [ " ${ FILE_TYPE } " = = "py" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-10-03 06:55:34 -04:00
FILE_ARRAY_PYTHON_BLACK += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
FILE_ARRAY_PYTHON_FLAKE8 += ( " ${ FILE } " )
2020-10-28 11:22:55 -04:00
FILE_ARRAY_PYTHON_ISORT += ( " ${ FILE } " )
2021-01-27 14:47:34 -05:00
FILE_ARRAY_PYTHON_PYLINT += ( " ${ FILE } " )
2021-03-24 15:00:23 -04:00
FILE_ARRAY_PYTHON_MYPY += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
######################
# Get the RAKU files #
######################
elif [ " ${ FILE_TYPE } " = = "raku" ] || [ " ${ FILE_TYPE } " = = "rakumod" ] ||
[ " ${ FILE_TYPE } " = = "rakutest" ] || [ " ${ FILE_TYPE } " = = "pm6" ] ||
[ " ${ FILE_TYPE } " = = "pl6" ] || [ " ${ FILE_TYPE } " = = "p6" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_RAKU += ( " ${ FILE } " )
####################
# Get the R files #
####################
elif [ " ${ FILE_TYPE } " = = "r" ] || [ " ${ FILE_TYPE } " = = "rmd" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_R += ( " ${ FILE } " )
######################
# Get the RUBY files #
######################
elif [ " ${ FILE_TYPE } " = = "rb" ] ; then
2020-07-30 16:39:05 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_RUBY += ( " ${ FILE } " )
2021-02-26 09:47:21 -05:00
######################
# Get the RUST files #
######################
elif [ " ${ FILE_TYPE } " = = "rs" ] ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_RUST_2015 += ( " ${ FILE } " )
FILE_ARRAY_RUST_2018 += ( " ${ FILE } " )
2021-12-07 16:55:54 -05:00
FILE_ARRAY_RUST_2021 += ( " ${ FILE } " )
2021-02-26 09:47:21 -05:00
2021-03-08 15:13:04 -05:00
#######################
# Get the RUST crates #
#######################
elif [ " ${ BASE_FILE } " = = "cargo.toml" ] ; then
###############################################
# Append the crate manifest file to the array #
###############################################
FILE_ARRAY_RUST_CLIPPY += ( " ${ FILE } " )
2021-11-10 13:28:50 -05:00
###########################
# Get the SCALA files #
###########################
2022-01-06 10:28:26 -05:00
elif [ " ${ FILE_TYPE } " = = "scala" ] || [ " ${ FILE_TYPE } " = = "sc" ] || [ " ${ BASE_FILE } " = = "??????" ] ; then
2021-11-10 13:28:50 -05:00
################################
# Append the file to the array #
################################
FILE_ARRAY_SCALAFMT += ( " ${ FILE } " )
2020-09-07 10:49:07 -04:00
###########################
# Get the SNAKEMAKE files #
###########################
2020-10-03 06:55:34 -04:00
elif [ " ${ FILE_TYPE } " = = "smk" ] || [ " ${ BASE_FILE } " = = "snakefile" ] ; then
2020-09-07 10:49:07 -04:00
################################
# Append the file to the array #
################################
2020-10-02 17:02:47 -04:00
FILE_ARRAY_SNAKEMAKE_LINT += ( " ${ FILE } " )
FILE_ARRAY_SNAKEMAKE_SNAKEFMT += ( " ${ FILE } " )
2020-09-07 10:49:07 -04:00
2020-08-31 12:51:03 -04:00
#####################
# Get the SQL files #
#####################
elif [ " ${ FILE_TYPE } " = = "sql" ] ; then
2020-07-06 04:17:20 -04:00
################################
# Append the file to the array #
2021-01-27 14:47:34 -05:00
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_SQL += ( " ${ FILE } " )
2021-08-05 16:32:27 -04:00
FILE_ARRAY_SQLFLUFF += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
###########################
# Get the Terraform files #
###########################
elif [ " ${ FILE_TYPE } " = = "tf" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2021-08-30 10:47:50 -04:00
FILE_ARRAY_TERRAFORM_TFLINT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
FILE_ARRAY_TERRAFORM_TERRASCAN += ( " ${ FILE } " )
2022-12-23 03:58:50 -05:00
FILE_ARRAY_TERRAFORM_FMT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
2020-10-08 09:18:08 -04:00
############################
# Get the Terragrunt files #
############################
2021-06-28 09:40:31 -04:00
elif [ " ${ FILE_TYPE } " = = "hcl" ] && [ [ ${ FILE } != *".tflint.hcl" * ] ] && [ [ ${ FILE } != *".pkr.hcl" * ] ] ; then
2020-10-08 09:18:08 -04:00
################################
# Append the file to the array #
################################
FILE_ARRAY_TERRAGRUNT += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
############################
# Get the TypeScript files #
############################
elif [ " ${ FILE_TYPE } " = = "ts" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_TYPESCRIPT_ES += ( " ${ FILE } " )
FILE_ARRAY_TYPESCRIPT_STANDARD += ( " ${ FILE } " )
2021-11-12 11:25:32 -05:00
FILE_ARRAY_TYPESCRIPT_PRETTIER += ( " ${ FILE } " )
2020-08-31 12:51:03 -04:00
#####################
# Get the TSX files #
#####################
elif [ " ${ FILE_TYPE } " = = "tsx" ] ; then
2020-06-29 10:55:59 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_TSX += ( " ${ FILE } " )
#####################
# Get the XML files #
#####################
elif [ " ${ FILE_TYPE } " = = "xml" ] ; then
2020-07-04 18:14:27 -04:00
################################
# Append the file to the array #
2020-08-06 13:01:36 -04:00
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_XML += ( " ${ FILE } " )
################################
# Get the CLOUDFORMATION files #
################################
elif [ " ${ FILE_TYPE } " = = "yml" ] || [ " ${ FILE_TYPE } " = = "yaml" ] ; then
2020-07-14 10:28:58 -04:00
################################
# Append the file to the array #
################################
2020-08-31 12:51:03 -04:00
FILE_ARRAY_YAML += ( " ${ FILE } " )
2021-07-19 10:28:49 -04:00
###################################
# Check if file is GitHub Actions #
###################################
if DetectActions " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_GITHUB_ACTIONS += ( " ${ FILE } " )
fi
2020-12-04 17:04:09 -05:00
2020-08-31 12:51:03 -04:00
#####################################
# Check if the file is CFN template #
#####################################
if DetectCloudFormationFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_CLOUDFORMATION += ( " ${ FILE } " )
fi
2020-12-23 18:16:17 -05:00
############################
# Check if file is OpenAPI #
############################
if DetectOpenAPIFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_OPENAPI += ( " ${ FILE } " )
fi
2020-10-13 11:21:23 -04:00
########################################
# Check if the file is Tekton template #
########################################
if DetectTektonFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
FILE_ARRAY_TEKTON += ( " ${ FILE } " )
fi
2020-09-21 18:53:30 -04:00
############################################
# Check if the file is Kubernetes template #
############################################
if DetectKubernetesFile " ${ FILE } " ; then
################################
# Append the file to the array #
################################
2022-12-07 23:24:36 -05:00
FILE_ARRAY_KUBERNETES_KUBECONFORM += ( " ${ FILE } " )
2020-09-21 18:53:30 -04:00
fi
2020-08-31 12:51:03 -04:00
########################################################################
# We have something that we need to try to check file type another way #
########################################################################
2020-06-29 10:55:59 -04:00
else
##############################################
# Use file to see if we can parse what it is #
##############################################
2020-08-24 12:11:10 -04:00
CheckFileType " ${ FILE } "
2020-08-24 12:16:22 -04:00
fi
2020-10-19 21:46:14 -04:00
##########################################
# Print line break after each file debug #
##########################################
debug ""
2020-06-29 10:55:59 -04:00
done
2021-12-08 15:28:30 -05:00
if [ " ${ VALIDATE_JSCPD_ALL_CODEBASE } " = = "true" ] ; then
debug "Adding the root of the workspaces to the list of files and directories to lint with JSCPD..."
FILE_ARRAY_JSCPD += ( " ${ GITHUB_WORKSPACE } " )
fi
2020-06-29 10:55:59 -04:00
################
# Footer print #
################
2020-07-30 16:39:05 -04:00
info "----------------------------------------------"
info "Successfully gathered list of files..."
2020-06-29 10:55:59 -04:00
}