2018-12-13 22:16:01 -05:00
|
|
|
import argparse
|
|
|
|
|
import os
|
|
|
|
|
import subprocess
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main(argv=None):
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
|
description="""Run terraform-docs on a set of files. Follows the standard convention of
|
2024-10-02 15:05:21 +02:00
|
|
|
pulling the documentation from main.(tf|tofu) in order to replace the entire
|
2018-12-13 22:16:01 -05:00
|
|
|
README.md file each time."""
|
|
|
|
|
)
|
2018-12-14 10:45:59 -05:00
|
|
|
parser.add_argument(
|
2024-10-02 15:05:21 +02:00
|
|
|
"--dest",
|
|
|
|
|
dest="dest",
|
|
|
|
|
default="README.md",
|
2018-12-14 10:45:59 -05:00
|
|
|
)
|
2018-12-13 22:16:01 -05:00
|
|
|
parser.add_argument(
|
2024-10-02 15:05:21 +02:00
|
|
|
"--sort-inputs-by-required",
|
|
|
|
|
dest="sort",
|
|
|
|
|
action="store_true",
|
|
|
|
|
help="[deprecated] use --sort-by-required instead",
|
2020-11-12 05:55:53 -05:00
|
|
|
)
|
|
|
|
|
parser.add_argument(
|
2024-10-02 15:05:21 +02:00
|
|
|
"--sort-by-required",
|
|
|
|
|
dest="sort",
|
|
|
|
|
action="store_true",
|
2018-12-13 22:16:01 -05:00
|
|
|
)
|
|
|
|
|
parser.add_argument(
|
2024-10-02 15:05:21 +02:00
|
|
|
"--with-aggregate-type-defaults",
|
|
|
|
|
dest="aggregate",
|
|
|
|
|
action="store_true",
|
|
|
|
|
help="[deprecated]",
|
2018-12-13 22:16:01 -05:00
|
|
|
)
|
2024-10-02 15:05:21 +02:00
|
|
|
parser.add_argument("filenames", nargs="*", help="Filenames to check.")
|
2018-12-13 22:16:01 -05:00
|
|
|
args = parser.parse_args(argv)
|
|
|
|
|
|
|
|
|
|
dirs = []
|
2026-05-29 14:48:02 -04:00
|
|
|
seen_dirs = set()
|
2018-12-13 22:16:01 -05:00
|
|
|
for filename in args.filenames:
|
2026-05-29 14:48:02 -04:00
|
|
|
if filename.endswith((".tf", ".tofu", ".tfvars")):
|
|
|
|
|
dir_path = os.path.dirname(filename)
|
|
|
|
|
dir_key = os.path.realpath(dir_path)
|
|
|
|
|
if dir_key not in seen_dirs:
|
|
|
|
|
seen_dirs.add(dir_key)
|
|
|
|
|
dirs.append(dir_path)
|
2018-12-13 22:16:01 -05:00
|
|
|
|
|
|
|
|
retval = 0
|
|
|
|
|
|
|
|
|
|
for dir in dirs:
|
|
|
|
|
try:
|
|
|
|
|
procArgs = []
|
2024-10-02 15:05:21 +02:00
|
|
|
procArgs.append("terraform-docs")
|
2018-12-13 22:16:01 -05:00
|
|
|
if args.sort:
|
2024-10-02 15:05:21 +02:00
|
|
|
procArgs.append("--sort-by-required")
|
|
|
|
|
procArgs.append("md")
|
2018-12-14 17:03:14 -05:00
|
|
|
procArgs.append("./{dir}".format(dir=dir))
|
2024-10-02 15:05:21 +02:00
|
|
|
procArgs.append(">")
|
2021-02-25 19:46:51 +00:00
|
|
|
procArgs.append("./{dir}/{dest}".format(dir=dir, dest=args.dest))
|
2018-12-13 22:16:01 -05:00
|
|
|
subprocess.check_call(" ".join(procArgs), shell=True)
|
|
|
|
|
except subprocess.CalledProcessError as e:
|
|
|
|
|
print(e)
|
|
|
|
|
retval = 1
|
|
|
|
|
return retval
|
|
|
|
|
|
|
|
|
|
|
2024-10-02 15:05:21 +02:00
|
|
|
if __name__ == "__main__":
|
2018-12-13 22:16:01 -05:00
|
|
|
sys.exit(main())
|