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:
Colwyn Fritze-Moor 2022-02-14 07:23:17 -08:00 committed by GitHub
parent eb4aad643b
commit c1ded5ed7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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 #
############################## ##############################