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