mirror of
https://github.com/super-linter/super-linter.git
synced 2024-12-22 20:52:12 -05:00
fix: tflint should clean up after itself (#2459)
* fix: tflint should clean up after itself * feat: add cache for tflint
This commit is contained in:
parent
eb4aad643b
commit
c1ded5ed7d
1 changed files with 43 additions and 1 deletions
|
@ -28,6 +28,11 @@ function LintCodebase() {
|
||||||
##########################
|
##########################
|
||||||
LIST_FILES=()
|
LIST_FILES=()
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
# Array to track directories where tflint was run #
|
||||||
|
###################################################
|
||||||
|
declare -A TFLINT_SEEN_DIRS
|
||||||
|
|
||||||
################
|
################
|
||||||
# Set the flag #
|
# Set the flag #
|
||||||
################
|
################
|
||||||
|
@ -261,9 +266,30 @@ function LintCodebase() {
|
||||||
# Corner case for TERRAFORM_TFLINT as it cant use the full path and needs to fetch modules #
|
# Corner case for TERRAFORM_TFLINT as it cant use the full path and needs to fetch modules #
|
||||||
############################################################################################
|
############################################################################################
|
||||||
elif [[ ${FILE_TYPE} == "TERRAFORM_TFLINT" ]]; then
|
elif [[ ${FILE_TYPE} == "TERRAFORM_TFLINT" ]]; then
|
||||||
|
# Check the cache to see if we've already prepped this directory for tflint
|
||||||
|
if [[ ! -v "TFLINT_SEEN_DIRS[${DIR_NAME}]" ]]; then
|
||||||
|
debug " Setting up TERRAFORM_TFLINT cache for ${DIR_NAME}"
|
||||||
|
|
||||||
|
TF_DOT_DIR="${DIR_NAME}/.terraform"
|
||||||
|
if [ -d "${TF_DOT_DIR}" ]; then
|
||||||
|
# Just in case there's something in the .terraform folder, keep a copy of it
|
||||||
|
TF_BACKUP_DIR="/tmp/.terraform-tflint-backup${DIR_NAME}"
|
||||||
|
debug " Backing up ${TF_DOT_DIR} to ${TF_BACKUP_DIR}"
|
||||||
|
|
||||||
|
mkdir -p "${TF_BACKUP_DIR}"
|
||||||
|
cp -r "${TF_DOT_DIR}" "${TF_BACKUP_DIR}"
|
||||||
|
# Store the destination directory so we can restore from our copy later
|
||||||
|
TFLINT_SEEN_DIRS[${DIR_NAME}]="${TF_BACKUP_DIR}"
|
||||||
|
else
|
||||||
|
# Just let the cache know we've seen this before
|
||||||
|
TFLINT_SEEN_DIRS[${DIR_NAME}]='false'
|
||||||
|
fi
|
||||||
|
|
||||||
|
terraform get 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
LINT_CMD=$(
|
LINT_CMD=$(
|
||||||
cd "${DIR_NAME}" || exit
|
cd "${DIR_NAME}" || exit
|
||||||
terraform get 2>&1
|
|
||||||
${LINTER_COMMAND} "${FILE_NAME}" 2>&1
|
${LINTER_COMMAND} "${FILE_NAME}" 2>&1
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
|
@ -338,6 +364,22 @@ function LintCodebase() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Clean up after TFLINT
|
||||||
|
for TF_DIR in "${!TFLINT_SEEN_DIRS[@]}"; do
|
||||||
|
(
|
||||||
|
cd "${TF_DIR}" || exit
|
||||||
|
rm -rf .terraform
|
||||||
|
|
||||||
|
# Check to see if there was a .terraform folder there before we got started, restore it if so
|
||||||
|
POTENTIAL_BACKUP_DIR="${TFLINT_SEEN_DIRS[${TF_DIR}]}"
|
||||||
|
if [[ "${POTENTIAL_BACKUP_DIR}" != 'false' ]]; then
|
||||||
|
# Put the copy back in place
|
||||||
|
debug " Restoring ${TF_DIR}/.terraform from ${POTENTIAL_BACKUP_DIR}"
|
||||||
|
mv "${POTENTIAL_BACKUP_DIR}/.terraform" .terraform
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
done
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
# Validate we ran some tests #
|
# Validate we ran some tests #
|
||||||
##############################
|
##############################
|
||||||
|
|
Loading…
Reference in a new issue