From 2d8e1765f97b1ceac8d0b2fa1f59d447555e4548 Mon Sep 17 00:00:00 2001
From: Timo Furrer <tfurrer@gitlab.com>
Date: Fri, 31 May 2024 08:57:08 +0200
Subject: [PATCH] Introduce auto-approve with FF

---
 .gitlab/README.md.template |  1 +
 README.md                  |  1 +
 src/gitlab-tofu.sh         | 13 +++++++++++--
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/.gitlab/README.md.template b/.gitlab/README.md.template
index 520248f..2120dba 100644
--- a/.gitlab/README.md.template
+++ b/.gitlab/README.md.template
@@ -105,6 +105,7 @@ but no destructive actions.
 
 - [`validate-plan`](templates/validate-plan.yml)
 - [`validate-plan-apply`](templates/validate-plan-apply.yml)
+- [`validate-plan-destroy`](templates/validate-plan-destroy.yml)
 
 ### Job Templates
 
diff --git a/README.md b/README.md
index fb79a61..44a2267 100644
--- a/README.md
+++ b/README.md
@@ -107,6 +107,7 @@ but no destructive actions.
 
 - [`validate-plan`](templates/validate-plan.yml)
 - [`validate-plan-apply`](templates/validate-plan-apply.yml)
+- [`validate-plan-destroy`](templates/validate-plan-destroy.yml)
 
 ### Job Templates
 
diff --git a/src/gitlab-tofu.sh b/src/gitlab-tofu.sh
index 9282763..0f8b02b 100644
--- a/src/gitlab-tofu.sh
+++ b/src/gitlab-tofu.sh
@@ -16,6 +16,10 @@ if [ -z "$TF_FF_AUTO_URLENCODE_STATE_NAME" ]; then
   TF_FF_AUTO_URLENCODE_STATE_NAME=true
 fi
 
+if [ -z "$TF_FF_AUTO_APPROVE_APPLY" ]; then
+  TF_FF_AUTO_APPROVE_APPLY=true
+fi
+
 # Helpers
 
 # Evaluate if this script is being sourced or executed directly.
@@ -165,11 +169,16 @@ if [ $sourced -eq 0 ]; then
 
   case "${1}" in
     "apply")
+      auto_approve_args=""
+      if [ "${TF_FF_AUTO_APPROVE_APPLY}" = true ]; then
+        auto_approve_args="-auto-approve"
+      fi
+
       $TF_IMPLICIT_INIT && terraform_init
       if [ "$TF_APPLY_NO_PLAN" = false ]; then
-        tofu "${TF_CHDIR_OPT}" "${@}" -input=false "${TF_PLAN_CACHE}"
+        tofu "${TF_CHDIR_OPT}" "${@}" -input=false "${auto_approve_args}" "${TF_PLAN_CACHE}"
       else
-        tofu "${TF_CHDIR_OPT}" "${@}" -input=false
+        tofu "${TF_CHDIR_OPT}" "${@}" -input=false "${auto_approve_args}"
       fi
     ;;
     "destroy")
-- 
GitLab