From a570218e587f91f742cb281ba58354583ac73303 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Wed, 22 Jan 2025 21:04:56 +0200
Subject: [PATCH] Address different cases with apply.

We can't add -var-file to an apply command if a plan is specified.
---
 tf.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tf.py b/tf.py
index e787018..0483810 100644
--- a/tf.py
+++ b/tf.py
@@ -83,6 +83,23 @@ def wrapper():
             print(f"Can't find {TF_CLI}.", file=sys.stderr)
             sys.exit(1)
 
+    # We can't add -var-file to an apply command with a plan. So we check all
+    # of the args after the apply arg and if all of them are switches we assume
+    # that a plan isn't specified (technically the plan file can also start
+    # with a "-" and look like a switch, but let's not go there).
+    if command == "apply":
+        apply_index = sys.argv.index("apply")
+        if not all(
+            map(lambda x: x.startswith("-"), sys.argv[apply_index + 1 :])
+        ):
+            # No all args are switches, so a plan is specified and we don't add
+            # the -var-file switch.
+            try:
+                os.execvp(TF_CLI, args)  # nosec
+            except FileNotFoundError:
+                print(f"Can't find {TF_CLI}.", file=sys.stderr)
+                sys.exit(1)
+
     # We need to add the var files after the Terraform command (if we add it
     # before Terraform doesn't accept them) but not at the end (not to modify
     # other argument that accept optional values). So we add them right after
-- 
GitLab