tfvars2markdown

Converts Terraform 0.12+ variables file into a Markdown table


License
MIT
Install
pip install tfvars2markdown==0.0.1

Documentation

tfvars2markdown

Converts Terraform 0.12+ variables file into a Markdown table

Why tfvars2markdown

Friends don't let friends provide Terraform modules without READMEs containing input variables and outputs.

This Python package can generate Markdown-flavored tables for input variables for you by reading .tf files in a folder.

Generated Markdown table is compatible with the following services:

  • Github
  • Bitbucket
  • GitLab

Install

pip install tfvars2markdown

Usage

tfvars2markdown my_vars.tf

Options

Argument Description Default value Required
tf_vars_file Path to the .tf file containing variables - True
-t/--no-ticks Disable backticks around values in "Type" and "Default" columns False False
-d/--heading Changes the default "Inputs" heading. Only first level heading (#) is supported. Inputs False

Examples

Defaults

$ tfvars2markdown vars.tf
# Inputs
|    Name    |                                      Description                                      |      Type      |         Default         | Required |
|------------|---------------------------------------------------------------------------------------|:--------------:|:-----------------------:|:--------:|
| some_var_1 | Some description var_1                                                                |    `string`    |          `foo`          |   yes    |
| some_var_2 | Some description var_2                                                                |     `bool`     |         `False`         |   yes    |
| some_var_3 | Some description var_3                                                                |    `number`    |          `12`           |   yes    |
| some_var_4 | -                                                                                     | `list(string)` | `['foo', 'bar', 'baz']` |   yes    |
| some_var_5 | Some description var_5. This is a very long description with unicode characters ćšđž |  `list(bool)`  |  `[True, True, False]`  |   yes    |
| some_var_6 | Some description var_6                                                                | `list(number)` |       `[1, 2, 3]`       |   yes    |
| some_var_7 | Some description var_7. No defaults provided                                          |     `any`      |            -            |   yes    |
| some_var_8 | Some description var_8. No type or default provided                                   |       -        |            -            |   yes    |
| some_var_9 | Some description var_8. No type or default provided                                   |       -        |            -            |   yes    |

No backticks

$ tfvars2markdown --no-ticks vars.tf
# Inputs
|    Name    |                                      Description                                      |     Type     |        Default        | Required |
|------------|---------------------------------------------------------------------------------------|:------------:|:---------------------:|:--------:|
| some_var_1 | Some description var_1                                                                |    string    |          foo          |   yes    |
| some_var_2 | Some description var_2                                                                |     bool     |         False         |   yes    |

Different heading

# my input vars
|    Name    |                                      Description                                      |      Type      |         Default         | Required |
|------------|---------------------------------------------------------------------------------------|:--------------:|:-----------------------:|:--------:|
| some_var_1 | Some description var_1                                                                |    `string`    |          `foo`          |   yes    |
| some_var_2 | Some description var_2                                                                |     `bool`     |         `False`         |   yes    |

Due to limitations in pytablewriter only first level heading (#) is supported.

Tests

Install test_requirements.txt and run

python -m unittest discover