#!/usr/bin/env python3
"""Terraform wrapper to include a variable file is one exists that matches the workspace name"""  # noqa: E501

import glob
import os
import pathlib
import subprocess  # nosec
import sys

TF_COMMANDS_TO_MODIFY = ["plan", "console", "import", "refresh"]


def get_workspace():
    """Return the Terraform workspace."""
    proc = subprocess.run(  # nosec
        ["terraform", "workspace", "show"],
        capture_output=True,
        check=True,
        text=True,
    )
    return proc.stdout.strip()


if __name__ == "__main__":
    if len(sys.argv) == 1:
        os.execlp("terraform", "terraform")  # nosec
    for command in TF_COMMANDS_TO_MODIFY:
        if command in sys.argv:
            break
    else:
        args = sys.argv[:]
        args[0] = "terraform"
        os.execvp("terraform", args)  # nosec

    args = sys.argv[:]
    args[0] = "terraform"
    command_index = args.index(command)
    workspace = get_workspace()
    var_file = pathlib.Path(f"{workspace}.tfvars")
    var_dir = pathlib.Path(workspace)
    if var_file.exists() and var_file.is_file():
        args.insert(command_index + 1, f"-var-file={var_file}")
    elif var_dir.exists() and var_dir.is_dir():
        for var_file in glob.glob(f"{var_dir}/*.tfvars"):
            args.insert(command_index + 1, f"-var-file={var_file}")
    print(args, file=sys.stderr)
    os.execvp("terraform", args)  # nosec
