[terraform_docs] Can't define specific path
mcinquin opened this issue · 4 comments
Describe the bug
I have a tree structure where my tf files are not in the root but in a subfolder.
/ # Project Root
|_ blueprint
|_ main.tf
|_ variables.tf
|_ *.tf
|_ .terraform-docs.yml
|_ .pre-commit-config.yaml
|_ README.md
I want to be able to do as the following cli command
$ terraform-docs -c .terraform-docs.yml --output-file ../README.md blueprint/
How can we reproduce it?
with terraform-doc cli
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: blueprint/terraform.tf
no changes added to commit (use "git add" and/or "git commit -a")
$ terraform-docs -c .terraform-docs.yml --output-file ../README.md blueprint/
README.md updated successfully
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
modified: blueprint/terraform.tf
no changes added to commit (use "git add" and/or "git commit -a")
with pre-commit
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: blueprint/terraform.tf
no changes added to commit (use "git add" and/or "git commit -a")
$ pre-commit run -a
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
Terraform fmt............................................................Passed
Terraform validate with tflint...........................................Passed
Terraform validate with trivy............................................Passed
Terraform docs...........................................................Passed
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: blueprint/terraform.tf
Environment information
-
OS: Ubuntu 20.04
-
uname -a
and/orsysteminfo | Select-String "^OS"
output:
Linux tllab036 6.2.0-39-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 14 14:18:00 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
- Tools availability and versions:
GNU bash, version 5.2.15(1)-release (x86_64-pc-linux-gnu)
pre-commit 3.6.0
Terraform v1.6.6
python SKIPPED
Python 3.11.4
checkov checkov SKIPPED
terraform-docs version v0.16.0 1f686b1 linux/amd64
terragrunt SKIPPED
terrascan terrascan SKIPPED
TFLint version 0.49.0
+ ruleset.terraform (0.5.0-bundled)
tfsec v1.28.4
tfupdate tfupdate SKIPPED
hcledit hcledit SKIPPE
.pre-commit-config.yaml
:
file content
default_stages: [commit]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.86.0
hooks:
- id: terraform_fmt
- id: terraform_tflint
- id: terraform_trivy
- id: terraform_docs
args:
- --args=--config=.terraform-docs.yml
- --args=blueprint/
.terraform-docs.yml
:
file content
formatter: markdown table
sections:
hide-all: true
content: |-
{{ .Requirements }}
{{ .Providers }}
{{ .Modules }}
{{ .Inputs }}
{{ .Outputs }}
output:
file: README.md
mode: inject
template: |-
<!-- BEGIN_AUTOMATED_TF_DOCS_BLOCK -->
{{ .Content }}
<!-- END_AUTOMATED_TF_DOCS_BLOCK -->
output-values:
enabled: false
from: "outputs.tf"
sort:
enabled: true
by: "required"
settings:
anchor: true
color: true
default: true
description: true
escape: true
hide-empty: false
html: true
indent: 3
lockfile: true
read-comments: true
required: true
sensitive: true
type: true
Would the item 3 from https://github.com/antonbabenko/pre-commit-terraform#terraform_docs be sufficient in your use case (adding the --hook-config=--path-to-file=../README.md
to args
)?
You also most probably do not need --args=blueprint/
arg.
Hello,
Thank you for your quick response.
I made the changes, but terraform_docs doesn't modify the README file in the right place
.pre-commit-config.yaml
:
file content
default_stages: [commit]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.86.0
hooks:
- id: terraform_fmt
- id: terraform_tflint
- id: terraform_trivy
- id: terraform_docs
args:
- --hook-config=--path-to-file=../README.md
- --args=--config=.terraform-docs.yml
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: blueprint/terraform.tf
no changes added to commit (use "git add" and/or "git commit -a")
$ pre-commit run -a -v
trim trailing whitespace.................................................Passed
- hook id: trailing-whitespace
- duration: 0.07s
fix end of files.........................................................Passed
- hook id: end-of-file-fixer
- duration: 0.06s
Terraform fmt............................................................Passed
- hook id: terraform_fmt
- duration: 0.21s
Terraform validate with tflint...........................................Passed
- hook id: terraform_tflint
- duration: 0.21s
Command 'tflint --init' successfully done:
Terraform validate with trivy............................................Passed
- hook id: terraform_trivy
- duration: 2.76s
2024-01-18T10:28:37.901+0100 INFO Misconfiguration scanning is enabled
2024-01-18T10:28:38.728+0100 INFO Detected config files: 1
2024-01-18T10:28:39.622+0100 INFO Misconfiguration scanning is enabled
2024-01-18T10:28:39.672+0100 INFO Detected config files: 0
Terraform docs...........................................................Passed
- hook id: terraform_docs
- duration: 0.37s
$ git status
On branch pre-commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: blueprint/terraform.tf
Untracked files:
(use "git add <file>..." to include in what will be committed)
blueprint/README.md
no changes added to commit (use "git add" and/or "git commit -a")
That's odd 😿 Unfortunately I'm not user of tfdocs hooks. Maybe @MaxymVlasov can give a hint 🤔
ps: taking a wild guess — what if you remove file: README.md
from tfdocs config (so that we're sure there's no race condition)?
Thanks for pointing me in the right direction!
If I delete file: README.md
in the tfdocs configuration file, it doesn't work. However, if I put file: ../README.md
it works!
Thanks a lot for your reactivity!
- .pre-commit-config.yaml
file content
default_stages: [commit]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.86.0
hooks:
- id: terraform_fmt
- id: terraform_tflint
- id: terraform_trivy
- id: terraform_docs
args:
- --hook-config=--path-to-file=../README.md
- --args=--config=.terraform-docs.yml
- .terraform-docs.yml
file content
formatter: markdown table
sections:
hide-all: true
content: |-
{{ .Requirements }}
{{ .Providers }}
{{ .Modules }}
{{ .Inputs }}
{{ .Outputs }}
output:
file: ../README.md
mode: inject
template: |-
<!-- BEGIN_AUTOMATED_TF_DOCS_BLOCK -->
{{ .Content }}
<!-- END_AUTOMATED_TF_DOCS_BLOCK -->
output-values:
enabled: false
from: "outputs.tf"
sort:
enabled: true
by: "required"
settings:
anchor: true
color: true
default: true
description: true
escape: true
hide-empty: false
html: true
indent: 3
lockfile: true
read-comments: true
required: true
sensitive: true
type: true