Package: tfrelease
tfreleaseTerraform tool for fetching release metadataDescriptionWelcome to thetfreleaserepo. This Python command line utility fetches Terraform
release metadata, filters releases based on query, generates release tags, and
returns the results in your desired output format [text|json|yaml]. It was built
with CI/CD in mind.TagsRelease tags generated by tfrelease follow the following naming convention. In
this examplehansohn/terraformis
a docker image that been tagged using this tool.# tag formats
hansohn/terraform:latest        latest release of Terraform
hansohn/terraform:1             latest 1.x.x version release of Terraform
hansohn/terraform:1.2           latest 1.2.x version release of Terraform
hansohn/terraform:1.2.3         1.2.3 version of TerraformUsageCommands$ tfrelease --help
Usage: tfrelease [OPTIONS]

  Gathers a historical list of Terraform versions and their metadata. Produces
  a filtered response based on arguement inputs.

Options:
  -c, --count INTEGER            Return latest N number of minor release
                                 versions.  [default: 1]
  -r, --regex TEXT               Filter release versions using regex pattern
                                 matching. example: '^(0.15|1)$'
  -b, --build TEXT               Filter build versions by platform os and
                                 arch. example: 'os=linux,arch=amd64'
  -t, --tag-template TEXT        Format tags to templatized string. String
                                 template must include '{tag}' keyword which
                                 will be replaced with actual tag value during
                                 formatting. example: 'foo/bar:{tag}-dev'
  -o, --output [text|json|yaml]  The formatting style for command output.
                                 [default: json]
  -L, --vlist                    Reformats 'versions' key to list of dicts.
                                 Defaults to key/value version dicts.
  -M, --major                    Includes major version tag in metadata of all
                                 lastest major version releases. example:
                                 1.2.3 -> 1
  -m, --minor                    Includes minor version tag in metadata of all
                                 lastest minor version releases. example:
                                 1.2.3 -> 1.2
  -p, --prerelease               Include pre-release versions in response.
  -v, --verbose                  Include all release metadata in response.
  -V, --verboseb                 Include all release metadata and all builds
                                 in response.
  --version                      Show the version and exit.
  --help                         Show this message and exit.MakefileAdditionally, a Makefile has been included in this repo to assist with common
development-related functions. I've included the following make targets for
convenience:Available targets:

  build                               Build python package
  clean                               Clean everything
  clean/build                         Clean python build directories
  clean/docker                        Clean docker build images
  clean/venv                          Clean virtual environment directory
  docker                              Docker launch testing environment
  docker/build                        Docker build image
  docker/lint                         Lint Dockerfile
  docker/push                         Docker push image
  docker/run                          Docker run image
  help                                Help screen
  help/all                            Display help for all targets
  help/short                          This help short screen
  lint                                Run all linters, validators, and security analyzers
  lint/bandit                         Python security linter
  lint/black                          Python code formatter
  lint/flake8                         Python styleguide enforcement
  lint/mypy                           Python static typing
  lint/pylint                         Python linter
  python/build                        Python build package
  python/packages                     Python install packages from requirements file(s)
  python/venv                         Python configure virtual environment
  upload/check                        Python upload check
  upload/pypi                         Python upload package to pypi
  upload/testpypi                     Python upload package to testpypi
  venv                                Create virtual environment and install requirements