in terranova/binds.py [0:0]
def _exec_ctx(self, *args, **kwargs) -> ContextManager[RunningCommand]:
# Predicate for allowed env vars
def is_allowed_env_var(env_var: str) -> bool:
return (
env_var.startswith("TF_")
or env_var.startswith("TERRANOVA_")
# Implicit credentials for s3 backend
or env_var.startswith("AWS_")
# Forward asdf for shims support
or env_var.startswith("ASDF_")
or env_var in ["HOME", "PATH"]
)
# Copy allowed env vars
env = {
key: value for key, value in os.environ.items() if is_allowed_env_var(key)
}
# Bind variables
if self.__variables:
for key, value in self.__variables.items():
env[f"TF_VAR_{key}"] = value
# Bind plugin cache dir
env["TF_PLUGIN_CACHE_DIR"] = (
SharedContext.terraform_shared_plugin_cache_dir().absolute().as_posix()
)
# Enable debug
if SharedContext.is_verbose_enabled():
env["TF_LOG"] = "DEBUG"
# Set all
kwargs["_env"] = env
if kwargs.get("_inherit"):
del kwargs["_inherit"]
kwargs["_in"] = sys.stdin
kwargs["_out"] = sys.stdout
kwargs["_err"] = sys.stderr
kwargs["_cwd"] = self.__work_dir
return super()._exec_ctx(*args, **kwargs)