minamijoyo / tfupdate

Update version constraints in your Terraform configurations
MIT License
542 stars 23 forks source link

Support getting release versions of a provider from the terraform registry #26

Closed pdecat closed 3 years ago

pdecat commented 3 years ago

This PR adds support for getting release versions of a provider from the terraform registry.

List versions:

# tfupdate release list -h
Usage: tfupdate release list [options] <SOURCE>

Arguments
  SOURCE             A path of release data source.
                     Valid format depends on --source-type option.
                       - github or gitlab:
                         owner/repo
                         e.g. terraform-providers/terraform-provider-aws
                      - tfregistryModule
                         namespace/name/provider
                         e.g. terraform-aws-modules/vpc/aws
                      - tfregistryProvider
                         namespace/type
                         e.g. hashicorp/aws

Options:
  -s  --source-type  A type of release data source.
                     Valid values are
                       - github (default)
                       - gitlab
                       - tfregistryModule
                       - tfregistryProvider

  -n  --max-length   The maximum length of list.

# tfupdate release list -s tfregistryProvider hashicorp/aws
2.69.0
2.70.0
3.0.0
3.1.0
3.2.0
3.3.0
3.4.0
3.5.0
3.6.0
3.7.0

# tfupdate release list -s tfregistryProvider datadog/datadog
2.12.1
2.13.0

Latest version:

# tfupdate release latest -h
Usage: tfupdate release latest [options] <SOURCE>

Arguments
  SOURCE             A path of release data source.
                     Valid format depends on --source-type option.
                       - github or gitlab:
                         owner/repo
                         e.g. terraform-providers/terraform-provider-aws
                      - tfregistryModule
                         namespace/name/provider
                         e.g. terraform-aws-modules/vpc/aws
                      - tfregistryProvider
                         namespace/type
                         e.g. hashicorp/aws

Options:
  -s  --source-type  A type of release data source.
                     Valid values are
                       - github (default)
                       - gitlab
                       - tfregistryModule
                       - tfregistryProvider

# tfupdate release latest -s tfregistryProvider hashicorp/aws
3.7.0

# tfupdate release latest -s tfregistryProvider datadog/datadog
2.13.0
minamijoyo commented 3 years ago

@pdecat Thank you for working on this! It's a great addition 👍 The implementation looks almost ok and I left some trivial review comments and questions. Please check them.

pdecat commented 3 years ago

Last comments fixed. Squashed all commits.

minamijoyo commented 3 years ago

@pdecat I've merge it and added a warning to clarify that it's experimental for now and cut a new release v0.4.2 🚀 Thank you for your awesome work 🎉