-
-
Notifications
You must be signed in to change notification settings - Fork 540
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: new terraform_fmt_v2 with better Windows support
- Loading branch information
1 parent
42919f3
commit c78797f
Showing
7 changed files
with
109 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
tests/results/* | ||
__pycache__/ | ||
*.py[cod] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +0,0 @@ | ||
print( | ||
'`terraform_docs_replace` hook is DEPRECATED.' | ||
'For migration instructions see https://github.com/antonbabenko/pre-commit-terraform/issues/248#issuecomment-1290829226' | ||
) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
from __future__ import annotations | ||
|
||
import argparse | ||
import logging | ||
import os | ||
from collections.abc import Sequence | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
def setup_logging(): | ||
logging.basicConfig( | ||
level={ | ||
"error": logging.ERROR, | ||
"warn": logging.WARNING, | ||
"warning": logging.WARNING, | ||
"info": logging.INFO, | ||
"debug": logging.DEBUG, | ||
}[os.environ.get("PRE_COMMIT_TERRAFORM_LOG_LEVEL", "warning").lower()] | ||
) | ||
|
||
|
||
def parse_env_vars(env_var_strs: list[str]) -> dict[str, str]: | ||
ret = {} | ||
for env_var_str in env_var_strs: | ||
name, val = env_var_str.split("=", 1) | ||
if val.startswith('"') and val.endswith('"'): | ||
val = val[1:-1] | ||
ret[name] = val | ||
return ret | ||
|
||
|
||
def parse_cmdline( | ||
argv: Sequence[str] | None = None, | ||
) -> tuple[list[str], list[str], list[str], list[str], dict[str, str]]: | ||
parser = argparse.ArgumentParser( | ||
add_help=False, # Allow the use of `-h` for compatiblity with Bash version of the hook | ||
) | ||
parser.add_argument("-a", "--args", action="append", help="Arguments") | ||
parser.add_argument("-h", "--hook-config", action="append", help="Hook Config") | ||
parser.add_argument("-i", "--init-args", "--tf-init-args", action="append", help="Init Args") | ||
parser.add_argument("-e", "--envs", "--env-vars", action="append", help="Environment Variables") | ||
parser.add_argument("FILES", nargs="*", help="Files") | ||
|
||
parsed_args = parser.parse_args(argv) | ||
|
||
args = parsed_args.args or [] | ||
hook_config = parsed_args.hook_config or [] | ||
files = parsed_args.FILES or [] | ||
tc_init_args = parsed_args.init_args or [] | ||
env_vars = parsed_args.envs or [] | ||
|
||
env_var_dict = parse_env_vars(env_vars) | ||
|
||
if hook_config: | ||
raise NotImplementedError("TODO: implement: hook_config") | ||
|
||
if tc_init_args: | ||
raise NotImplementedError("TODO: implement: tc_init_args") | ||
|
||
return args, hook_config, files, tc_init_args, env_var_dict |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
from __future__ import annotations | ||
|
||
import logging | ||
import os | ||
import shlex | ||
import sys | ||
from subprocess import PIPE, run | ||
from typing import Sequence | ||
|
||
from .common import parse_cmdline, setup_logging | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
def main(argv: Sequence[str] | None = None) -> int: | ||
setup_logging() | ||
logger.debug(sys.version_info) | ||
args, hook_config, files, tf_init_args, env_vars = parse_cmdline(argv) | ||
if os.environ.get("PRE_COMMIT_COLOR") == "never": | ||
args.append("-no-color") | ||
cmd = ["terraform", "fmt", *args, *files] | ||
logger.info("calling %s", shlex.join(cmd)) | ||
logger.debug("env_vars: %r", env_vars) | ||
logger.debug("args: %r", args) | ||
completed_process = run(cmd, env={**os.environ, **env_vars}, text=True, stdout=PIPE) | ||
if completed_process.stdout: | ||
print(completed_process.stdout) | ||
return completed_process.returncode | ||
|
||
|
||
if __name__ == "__main__": | ||
raise SystemExit(main()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters