Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tfupdate for openSUSE:Factory checked in at 2026-10-29 16:09:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tfupdate (Old) and /work/SRC/openSUSE:Factory/.tfupdate.new.1255 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tfupdate" Thu Oct 29 16:09:35 2026 rev:9 rq:1393530 version:0.10.3 Changes: -------- --- /work/SRC/openSUSE:Factory/tfupdate/tfupdate.changes 2026-07-15 16:57:28.314738845 +0200 +++ /work/SRC/openSUSE:Factory/.tfupdate.new.1255/tfupdate.changes 2026-10-29 16:11:43.785622618 +0100 @@ -1,0 +2,13 @@ +Thu Oct 29 05:49:39 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.10.3: + * Bump version to v0.10.3 + * Update CHANGELOG + * Fix the method for checking the OpenTofu version in testacc + * Add support for OpenTofu v1.13 + * Add support for Terraform v1.17 + * Update Go to v1.26.10 + * Improve grammar + * Fix typos + +------------------------------------------------------------------- Old: ---- tfupdate-0.10.2.obscpio New: ---- tfupdate-0.10.3.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tfupdate.spec ++++++ --- /var/tmp/diff_new_pack.TzKXHa/_old 2026-10-29 16:11:44.911669841 +0100 +++ /var/tmp/diff_new_pack.TzKXHa/_new 2026-10-29 16:11:44.913669925 +0100 @@ -17,7 +17,7 @@ Name: tfupdate -Version: 0.10.2 +Version: 0.10.3 Release: 0 Summary: Update version constraints in your Terraform configurations License: MPL-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.TzKXHa/_old 2026-10-29 16:11:44.954671645 +0100 +++ /var/tmp/diff_new_pack.TzKXHa/_new 2026-10-29 16:11:44.958671812 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/minamijoyo/tfupdate.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/v0.10.2</param> + <param name="revision">refs/tags/v0.10.3</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.TzKXHa/_old 2026-10-29 16:11:44.982672819 +0100 +++ /var/tmp/diff_new_pack.TzKXHa/_new 2026-10-29 16:11:44.986672987 +0100 @@ -3,6 +3,6 @@ <param name="url">https://github.com/minamijoyo/tfupdate</param> <param name="changesrevision">d78272a9f66b38bfc4d8b06140eba0076d722b1d</param></service><service name="tar_scm"> <param name="url">https://github.com/minamijoyo/tfupdate.git</param> - <param name="changesrevision">304fee8b804ef1cc9f68e61f350dfa811b0e2226</param></service></servicedata> + <param name="changesrevision">3a7cae3176cf2383d61b5e4e04c71d35eae9f47b</param></service></servicedata> (No newline at EOF) ++++++ tfupdate-0.10.2.obscpio -> tfupdate-0.10.3.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/.go-version new/tfupdate-0.10.3/.go-version --- old/tfupdate-0.10.2/.go-version 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/.go-version 2026-10-26 03:16:48.000000000 +0100 @@ -1 +1 @@ -1.26.2 +1.26.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/CHANGELOG.md new/tfupdate-0.10.3/CHANGELOG.md --- old/tfupdate-0.10.2/CHANGELOG.md 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/CHANGELOG.md 2026-10-26 03:16:48.000000000 +0100 @@ -1,5 +1,13 @@ ## master (Unreleased) +## 0.10.3 (2026/10/26) + +ENHANCEMENTS: + +* Update Go to v1.26.10 ([#171](https://github.com/minamijoyo/tfupdate/pull/171)) +* Add support for Terraform v1.17 ([#172](https://github.com/minamijoyo/tfupdate/pull/172)) +* Add support for OpenTofu v1.13 ([#173](https://github.com/minamijoyo/tfupdate/pull/173)) + ## 0.10.2 (2026/07/14) NEW FEATURES: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/Dockerfile new/tfupdate-0.10.3/Dockerfile --- old/tfupdate-0.10.2/Dockerfile 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/Dockerfile 2026-10-26 03:16:48.000000000 +0100 @@ -1,5 +1,5 @@ # tfupdate -FROM golang:1.26-alpine3.23 AS tfupdate +FROM golang:1.26.10-alpine3.23 AS tfupdate RUN apk --no-cache add make git WORKDIR /work @@ -13,7 +13,7 @@ # The linux binary for hub can not run on alpine. # So we need to build it from source. # https://github.com/github/hub/issues/1818 -FROM golang:1.26-alpine3.23 AS hub +FROM golang:1.26.10-alpine3.23 AS hub RUN apk add --no-cache bash git RUN git clone https://github.com/github/hub /work WORKDIR /work diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/Dockerfile.dev new/tfupdate-0.10.3/Dockerfile.dev --- old/tfupdate-0.10.2/Dockerfile.dev 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/Dockerfile.dev 2026-10-26 03:16:48.000000000 +0100 @@ -6,7 +6,7 @@ FROM ghcr.io/opentofu/opentofu:$OPENTOFU_VERSION-minimal AS opentofu # tfupdate -FROM golang:1.26-alpine3.23 AS tfupdate +FROM golang:1.26.10-alpine3.23 AS tfupdate RUN apk --no-cache add make git # A workaround for a permission issue of git. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/README.md new/tfupdate-0.10.3/README.md --- old/tfupdate-0.10.2/README.md 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/README.md 2026-10-26 03:16:48.000000000 +0100 @@ -16,7 +16,7 @@ ## Why? It is a best practice to break your Terraform configuration and state into small pieces to minimize the impact of an accident. It is also recommended to lock versions of Terraform core, providers and modules to avoid unexpected breaking changes. -If you decided to lock version constraints, you probably want to keep them up-to-date frequently to reduce the risk of version upgrade failures. +If you decide to lock version constraints, you probably want to keep them up-to-date frequently to reduce the risk of version upgrade failures. It's easy to update a single directory, but what if they are scattered across multiple directories? That is why I wrote a tool which parses Terraform configurations and updates all version constraints at once. @@ -116,7 +116,7 @@ } ``` -A value of version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): +The version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): ``` $ tfupdate terraform -v "~> 1.0" main.tf @@ -227,7 +227,7 @@ } ``` -A value of version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): +The version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): ``` $ tfupdate provider aws -v "~> 3.0" main.tf @@ -298,7 +298,7 @@ } ``` -A value of version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): +The version flag accepts any string literal. You can also pass a [version constraint](https://www.terraform.io/language/expressions/version-constraints): ``` $ tfupdate module -v "~> 2.14.1" terraform-aws-modules/s3-bucket/aws main.tf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/SECURITY.md new/tfupdate-0.10.3/SECURITY.md --- old/tfupdate-0.10.2/SECURITY.md 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/SECURITY.md 2026-10-26 03:16:48.000000000 +0100 @@ -9,7 +9,7 @@ This project only supports the latest version. We do not provide security patches for previous versions. ## Policy for fixing known vulnerabilities in dependency libraries -This project uses the "Dependabot alerts" and "Dependabot security updates" features to manage known vulnerabilities in dependency libraries. We will address vulnerabilities in dependency libraries as appropriate, so there is no need to report them as new vulnerabilities in this project. If Dependabot is not working properly for some reason, feel free to create a pull request. For the issue that has already been made public, we don't need to discuss it privately. +This project uses the "Dependabot alerts" and "Dependabot security updates" features to manage known vulnerabilities in dependency libraries. We will address vulnerabilities in dependency libraries as appropriate, so there is no need to report them as new vulnerabilities in this project. If Dependabot is not working properly for some reason, feel free to create a pull request. For issues that have already been made public, we don't need to discuss them privately. We do not provide patch releases for every issue we fix, except for critical ones. Instead, we release multiple fixes together as a patch. The severity is determined based on whether it is critical for this project, not the score reported for the dependency library. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/env.go new/tfupdate-0.10.3/command/env.go --- old/tfupdate-0.10.2/command/env.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/env.go 2026-10-26 03:16:48.000000000 +0100 @@ -2,7 +2,7 @@ // Env is a set of configurations read from environment variables. type Env struct { - // GitHubBaseURL is a base URL for GtiHub API requests. + // GitHubBaseURL is a base URL for GitHub API requests. // Defaults to the public GitHub API. GitHubBaseURL string `envconfig:"GITHUB_BASE_URL" default:"https://api.github.com/"` // GitHubToken is a personal access token for GitHub. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/lock.go new/tfupdate-0.10.3/command/lock.go --- old/tfupdate-0.10.2/command/lock.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/lock.go 2026-10-26 03:16:48.000000000 +0100 @@ -13,7 +13,7 @@ flag "github.com/spf13/pflag" ) -// LockCommand is a command which update dependency lock files. +// LockCommand is a command which updates dependency lock files. type LockCommand struct { Meta platforms []string @@ -25,7 +25,7 @@ // Run runs the procedure of this command. func (c *LockCommand) Run(args []string) int { cmdFlags := flag.NewFlagSet("lock", flag.ContinueOnError) - cmdFlags.StringArrayVar(&c.platforms, "platform", []string{}, "A target platform for dependecy lock file") + cmdFlags.StringArrayVar(&c.platforms, "platform", []string{}, "A target platform for dependency lock file") cmdFlags.BoolVarP(&c.recursive, "recursive", "r", false, "Check a directory recursively") cmdFlags.StringArrayVarP(&c.ignorePaths, "ignore-path", "i", []string{}, "A regular expression for path to ignore") @@ -35,7 +35,7 @@ } if len(cmdFlags.Args()) != 1 { - c.UI.Error(fmt.Sprintf("The command expects 1 arguments, but got %d", len(cmdFlags.Args()))) + c.UI.Error(fmt.Sprintf("The command expects 1 argument, but got %d", len(cmdFlags.Args()))) c.UI.Error(c.Help()) return 1 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/meta.go new/tfupdate-0.10.3/command/meta.go --- old/tfupdate-0.10.2/command/meta.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/meta.go 2026-10-26 03:16:48.000000000 +0100 @@ -19,7 +19,7 @@ Fs afero.Fs } -// newRelease is a factory method which returns an Release implementation. +// newRelease is a factory method which returns a Release implementation. func newRelease(sourceType string, source string) (release.Release, error) { var env Env err := envconfig.Process("", &env) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/module.go new/tfupdate-0.10.3/command/module.go --- old/tfupdate-0.10.2/command/module.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/module.go 2026-10-26 03:16:48.000000000 +0100 @@ -11,7 +11,7 @@ flag "github.com/spf13/pflag" ) -// ModuleCommand is a command which update version constraints for module. +// ModuleCommand is a command which updates version constraints for module. type ModuleCommand struct { Meta name string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/opentofu.go new/tfupdate-0.10.3/command/opentofu.go --- old/tfupdate-0.10.2/command/opentofu.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/opentofu.go 2026-10-26 03:16:48.000000000 +0100 @@ -12,7 +12,7 @@ flag "github.com/spf13/pflag" ) -// OpenTofuCommand is a command which update version constraints for OpenTofu. +// OpenTofuCommand is a command which updates version constraints for OpenTofu. type OpenTofuCommand struct { Meta version string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/provider.go new/tfupdate-0.10.3/command/provider.go --- old/tfupdate-0.10.2/command/provider.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/provider.go 2026-10-26 03:16:48.000000000 +0100 @@ -12,7 +12,7 @@ flag "github.com/spf13/pflag" ) -// ProviderCommand is a command which update version constraints for provider. +// ProviderCommand is a command which updates version constraints for provider. type ProviderCommand struct { Meta name string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/command/terraform.go new/tfupdate-0.10.3/command/terraform.go --- old/tfupdate-0.10.2/command/terraform.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/command/terraform.go 2026-10-26 03:16:48.000000000 +0100 @@ -12,7 +12,7 @@ flag "github.com/spf13/pflag" ) -// TerraformCommand is a command which update version constraints for terraform. +// TerraformCommand is a command which updates version constraints for terraform. type TerraformCommand struct { Meta version string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/lock/index.go new/tfupdate-0.10.3/lock/index.go --- old/tfupdate-0.10.2/lock/index.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/lock/index.go 2026-10-26 03:16:48.000000000 +0100 @@ -220,7 +220,7 @@ // Historically, the zh hash in the Terraform Registry contains `manifest.json`, // so the key for the `ProviderVersion` map is `filename`, not `platform`. // To ensure the same results with Terraform and OpenTofu, - // we need to build filename for each platform. + // we need to build a filename for each platform. // e.g.) darwin_arm64 => terraform-provider-null_3.2.1_darwin_arm64.zip pAddr, err := parseProviderAddress(address) if err != nil { @@ -253,24 +253,24 @@ // parseProviderAddress parses a provider address and returns an instance of tfaddr.Provider. // The provider address is expected to be in the format of "namespace/type", such as "hashicorp/null". func parseProviderAddress(address string) (*tfaddr.Provider, error) { - // We parse an provider address by using the terraform-registry-address + // We parse a provider address by using the terraform-registry-address // library to support fully qualified addresses such as // registry.terraform.io/hashicorp/null in the future, but note that the // current ProviderLockClient implementation only supports the public // standard registry (registry.terraform.io). pAddr, err := tfaddr.ParseProviderSource(address) if err != nil { - return nil, fmt.Errorf("failed to parse provider aaddress: %s", address) + return nil, fmt.Errorf("failed to parse provider address: %s", address) } - // Since .terraform.lock.hcl was introduced from v0.14, we assume that + // Since .terraform.lock.hcl was introduced in v0.14, we assume that // provider address is qualified with namespaces at least. We won't support // implicit legacy things. if !pAddr.HasKnownNamespace() { - return nil, fmt.Errorf("failed to parse unknown provider aaddress: %s", address) + return nil, fmt.Errorf("failed to parse unknown provider address: %s", address) } if pAddr.IsLegacy() { - return nil, fmt.Errorf("failed to parse legacy provider aaddress: %s", address) + return nil, fmt.Errorf("failed to parse legacy provider address: %s", address) } return &pAddr, nil diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/lock/mock.go new/tfupdate-0.10.3/lock/mock.go --- old/tfupdate-0.10.2/lock/mock.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/lock/mock.go 2026-10-26 03:16:48.000000000 +0100 @@ -50,7 +50,7 @@ return c } -// newMockZipData returns a new zip format data for testing. +// newMockZipData returns new zip format data for testing. func newMockZipData(filename string, contents string) ([]byte, error) { // create a zip file in memory var buf bytes.Buffer @@ -106,7 +106,7 @@ func newMockProviderDownloadResponse(address string, version string, targetPlatform string, allPlatforms []string) (*ProviderDownloadResponse, error) { pAddr, err := tfaddr.ParseProviderSource(address) if err != nil { - return nil, fmt.Errorf("failed to parse provider aaddress: %s", address) + return nil, fmt.Errorf("failed to parse provider address: %s", address) } name := pAddr.Type // create a zip file in memory. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/lock/provider_lock.go new/tfupdate-0.10.3/lock/provider_lock.go --- old/tfupdate-0.10.2/lock/provider_lock.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/lock/provider_lock.go 2026-10-26 03:16:48.000000000 +0100 @@ -140,7 +140,7 @@ return ret, nil } -// download is a helper function that downloads contents from a given url. +// download is a helper function that downloads contents from a given URL. func (c *ProviderLockClient) download(ctx context.Context, url string) ([]byte, error) { req, err := http.NewRequestWithContext(ctx, "GET", url, nil) if err != nil { @@ -172,7 +172,7 @@ func validateSHA256Sum(b []byte, sha256sum string) error { got := sha256sumAsHexString(b) if got != sha256sum { - return fmt.Errorf("checksum missmatch error. got = %s, expected = %s", got, sha256sum) + return fmt.Errorf("checksum mismatch error. got = %s, expected = %s", got, sha256sum) } return nil @@ -204,7 +204,7 @@ } if fields[1] == filename { if fields[0] != sha256sum { - return fmt.Errorf("checksum missmatch error. got = %s, expected = %s", fields[0], sha256sum) + return fmt.Errorf("checksum mismatch error. got = %s, expected = %s", fields[0], sha256sum) } return nil // ok } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/lock/provider_lock_test.go new/tfupdate-0.10.3/lock/provider_lock_test.go --- old/tfupdate-0.10.2/lock/provider_lock_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/lock/provider_lock_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -72,7 +72,7 @@ ok: false, }, { - desc: "checksum missmatch", + desc: "checksum mismatch", client: &mockTFRegistryClient{ metadataRes: &tfregistry.ProviderPackageMetadataResponse{ Filename: "terraform-provider-dummy_3.2.1_darwin_arm64.zip", @@ -198,7 +198,7 @@ ok: true, }, { - desc: "checksum missmatch", + desc: "checksum mismatch", b: zipData, sha256sum: "aaa", ok: false, @@ -243,7 +243,7 @@ ok: true, }, { - desc: "checksum missmatch", + desc: "checksum mismatch", b: shaSumsData, filename: "terraform-provider-dummy_3.2.1_darwin_arm64.zip", sha256sum: "aaa", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/main.go new/tfupdate-0.10.3/main.go --- old/tfupdate-0.10.2/main.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/main.go 2026-10-26 03:16:48.000000000 +0100 @@ -14,7 +14,7 @@ ) // Version is a version number. -var version = "0.10.2" +var version = "0.10.3" // UI is a user interface which is a global variable for mocking. var UI cli.Ui diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/release/github.go new/tfupdate-0.10.3/release/github.go --- old/tfupdate-0.10.2/release/github.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/release/github.go 2026-10-26 03:16:48.000000000 +0100 @@ -96,7 +96,7 @@ var _ Release = (*GitHubRelease)(nil) -// NewGitHubRelease is a factory method which returns an GitHubRelease instance. +// NewGitHubRelease is a factory method which returns a GitHubRelease instance. func NewGitHubRelease(source string, config GitHubConfig) (Release, error) { s := strings.SplitN(source, "/", 2) if len(s) != 2 { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/release/gitlab.go new/tfupdate-0.10.3/release/gitlab.go --- old/tfupdate-0.10.2/release/gitlab.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/release/gitlab.go 2026-10-26 03:16:48.000000000 +0100 @@ -12,11 +12,11 @@ // GitLabAPI is an interface which calls GitLab API. // This abstraction layer is needed for testing with mock. type GitLabAPI interface { - // ProjectListReleases gets a pagenated of releases accessible by the authenticated user. + // ProjectListReleases gets a page of releases accessible by the authenticated user. ProjectListReleases(ctx context.Context, owner, project string, opt *gitlab.ListReleasesOptions) ([]*gitlab.Release, *gitlab.Response, error) } -// GitLabConfig is a set of configurations for GitLabRelease.. +// GitLabConfig is a set of configurations for GitLabRelease. type GitLabConfig struct { // api is an instance of GitLabAPI interface. // It can be replaced for testing. @@ -27,7 +27,7 @@ // BaseURL should always be specified with a trailing slash. BaseURL string - // Token is a personal access token for GitLab, needed to use the api. + // Token is a personal access token for GitLab, needed to use the API. Token string } @@ -60,7 +60,7 @@ }, nil } -// ProjectListReleases gets a pagenated of releases accessible by the authenticated user. +// ProjectListReleases gets a page of releases accessible by the authenticated user. func (c *GitLabClient) ProjectListReleases(ctx context.Context, owner, project string, opt *gitlab.ListReleasesOptions) ([]*gitlab.Release, *gitlab.Response, error) { return c.client.Releases.ListReleases(owner+"/"+project, opt, gitlab.WithContext(ctx)) } @@ -81,7 +81,7 @@ var _ Release = (*GitLabRelease)(nil) -// NewGitLabRelease is a factory method which returns an GitLabRelease instance. +// NewGitLabRelease is a factory method which returns a GitLabRelease instance. func NewGitLabRelease(source string, config GitLabConfig) (*GitLabRelease, error) { s := strings.SplitN(source, "/", 2) if len(s) != 2 { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/release/release.go new/tfupdate-0.10.3/release/release.go --- old/tfupdate-0.10.2/release/release.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/release/release.go 2026-10-26 03:16:48.000000000 +0100 @@ -13,7 +13,7 @@ // Latest returns the latest release. // Note that GetLatestRelease API in GitHub and GitLab returns the most recent -// release, which doesn't means the latest stable release. I'm not sure it also +// release, which doesn't mean the latest stable release. I'm not sure if it also // affects Terraform Registry but I think we should use the same strategy for // consistency. So we sort versions in semver order and find the latest non // pre-release. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/release/tfregistry.go new/tfupdate-0.10.3/release/tfregistry.go --- old/tfupdate-0.10.2/release/tfregistry.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/release/tfregistry.go 2026-10-26 03:16:48.000000000 +0100 @@ -26,7 +26,7 @@ var _ Release = (*TFRegistryModuleRelease)(nil) -// NewTFRegistryModuleRelease is a factory method which returns an TFRegistryModuleRelease instance. +// NewTFRegistryModuleRelease is a factory method which returns a TFRegistryModuleRelease instance. func NewTFRegistryModuleRelease(source string, config tfregistry.Config) (Release, error) { s := strings.Split(source, "/") @@ -95,7 +95,7 @@ var _ Release = (*TFRegistryProviderRelease)(nil) -// NewTFRegistryProviderRelease is a factory method which returns an TFRegistryProviderRelease instance. +// NewTFRegistryProviderRelease is a factory method which returns a TFRegistryProviderRelease instance. func NewTFRegistryProviderRelease(source string, config tfregistry.Config) (Release, error) { s := strings.Split(source, "/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/release/version_test.go new/tfupdate-0.10.3/release/version_test.go --- old/tfupdate-0.10.2/release/version_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/release/version_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -50,12 +50,12 @@ want: []string{"0.1.0", "0.1.1", "0.2.0", "0.3.0"}, }, { - desc: "no pre-relases", + desc: "no pre-releases", versionsRaw: []string{"0.1.0", "0.1.1", "0.2.0", "0.3.0"}, want: []string{"0.1.0", "0.1.1", "0.2.0", "0.3.0"}, }, { - desc: "no stable relases", + desc: "no stable releases", versionsRaw: []string{"0.3.0-alpha1", "0.3.0-beta1", "0.3.0-beta2", "0.3.0-rc"}, want: []string{}, }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/scripts/testacc/lock.sh new/tfupdate-0.10.3/scripts/testacc/lock.sh --- old/tfupdate-0.10.2/scripts/testacc/lock.sh 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/scripts/testacc/lock.sh 2026-10-26 03:16:48.000000000 +0100 @@ -106,7 +106,7 @@ # If the registry supports the h1 hashes, omit the platform args. REGISTRY_H1_SUPPORT=0 if [[ "$TFUPDATE_EXEC_PATH" == tofu ]]; then - CURRENT_TOFU_VERSION=$( tofu -v | grep -oE 'OpenTofu v?[0-9]+\.[0-9]+\.[0-9]+' | sed 's/^OpenTofu v//') + CURRENT_TOFU_VERSION=$( tofu version | grep -oE 'OpenTofu v?[0-9]+\.[0-9]+\.[0-9]+' | sed 's/^OpenTofu v//') MIN_TOFU_REGISTRY_H1_SUPPORT=1.12.0 if [ "$(printf '%s\n%s\n' "$MIN_TOFU_REGISTRY_H1_SUPPORT" "$CURRENT_TOFU_VERSION" | sort -V | head -n1)" == "$MIN_TOFU_REGISTRY_H1_SUPPORT" ]; then REGISTRY_H1_SUPPORT=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/context.go new/tfupdate-0.10.3/tfupdate/context.go --- old/tfupdate-0.10.2/tfupdate/context.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/context.go 2026-10-26 03:16:48.000000000 +0100 @@ -126,7 +126,7 @@ // The result is sorted alphabetically by source address. // Version constraints only support simple constants and not comparison // operators. Ignore what cannot be interpreted. -func (mc *ModuleContext) SelecetedProviders() []SelectedProvider { +func (mc *ModuleContext) SelectedProviders() []SelectedProvider { selected := make(map[string]string) for _, p := range mc.requiredProviders { if p.Source == "" { @@ -134,7 +134,7 @@ // Terraform v0.13, but since this is already a deprecated usage, we don't // implicitly complement the official hashicorp namespace and is not included // in the results. - log.Printf("[DEBUG] ModuleContext.SelecetedProviders: ignore legacy provider address notation: %s", p.Source) + log.Printf("[DEBUG] ModuleContext.SelectedProviders: ignore legacy provider address notation: %s", p.Source) continue } @@ -142,7 +142,7 @@ if v == "" { // Ignore if no version is specified. - log.Printf("[DEBUG] ModuleContext.SelecetedProviders: ignore no version selected: %s", p.Source) + log.Printf("[DEBUG] ModuleContext.SelectedProviders: ignore no version selected: %s", p.Source) continue } @@ -172,7 +172,7 @@ v, err := version.NewVersion(c) if err != nil { // Ignore parse error - log.Printf("[DEBUG] selectVersion: ignore version parse error: constaraints = %#v, err = %s", constraints, err) + log.Printf("[DEBUG] selectVersion: ignore version parse error: constraints = %#v, err = %s", constraints, err) continue } // return the first one found diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/context_test.go new/tfupdate-0.10.3/tfupdate/context_test.go --- old/tfupdate-0.10.2/tfupdate/context_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/context_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -10,7 +10,7 @@ "github.com/spf13/afero" ) -func TestModuleContextSelecetedProviders(t *testing.T) { +func TestModuleContextSelectedProviders(t *testing.T) { cases := []struct { desc string src string @@ -159,7 +159,7 @@ t.Fatalf("failed to new ModuleContext: %s", err) } - got := mc.SelecetedProviders() + got := mc.SelectedProviders() if diff := cmp.Diff(got, tc.want); diff != "" { t.Errorf("got: %s, want = %s, diff = %s", spew.Sdump(got), spew.Sdump(tc.want), diff) @@ -379,7 +379,7 @@ t.Fatalf("failed to new ModuleContext: %s", err) } - got := mc.SelecetedProviders() + got := mc.SelectedProviders() if diff := cmp.Diff(got, tc.want); diff != "" { t.Errorf("got: %s, want = %s, diff = %s", spew.Sdump(got), spew.Sdump(tc.want), diff) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/hclwrite.go new/tfupdate-0.10.3/tfupdate/hclwrite.go --- old/tfupdate-0.10.2/tfupdate/hclwrite.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/hclwrite.go 2026-10-26 03:16:48.000000000 +0100 @@ -48,9 +48,9 @@ } // getHCLNativeAttribute gets hclwrite.Attribute as a native hcl.Attribute. -// At the time of writing, there is no way to do with the hclwrite AST, +// At the time of writing, there is no way to do this with the hclwrite AST, // so we build low-level byte sequences and parse an attribute as a -// hcl.Attribute on memory. +// hcl.Attribute in memory. // If not found, returns nil without an error. func getHCLNativeAttribute(body *hclwrite.Body, name string) (*hcl.Attribute, error) { attr := body.GetAttribute(name) @@ -63,9 +63,9 @@ src := append([]byte(name+" = "), attrAsBytes...) // parse an expression as a hcl.File. - // Note that an attribute may contains references, which are defined outside the file. + // Note that an attribute may contain references, which are defined outside the file. // So we cannot simply use hclsyntax.ParseExpression or hclsyntax.ParseConfig here. - // We need to use a loe-level parser not to resolve all references. + // We need to use a low-level parser not to resolve all references. parser := hclparse.NewParser() file, diags := parser.ParseHCL(src, "generated_by_getHCLNativeAttribute") if diags.HasErrors() { @@ -87,7 +87,7 @@ // getAttributeValueAsString returns a value of Attribute as string. // There is no way to get value as string directly, -// so we parses tokens of Attribute and build string representation. +// so we parse tokens of Attribute and build string representation. // The returned value is unquoted. func getAttributeValueAsUnquotedString(attr *hclwrite.Attribute) string { // find TokenEqual diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/hclwrite_test.go new/tfupdate-0.10.3/tfupdate/hclwrite_test.go --- old/tfupdate-0.10.2/tfupdate/hclwrite_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/hclwrite_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -238,7 +238,7 @@ } if tc.ok && got != nil { - // An expression is a complicated object and hard to build from literal. + // An expression is a complicated object and hard to build from a literal. // So we simply compare it by type. if reflect.TypeOf(got.Expr) != reflect.TypeOf(tc.wantExprType) { t.Errorf("got = %#v, but want = %#v", got.Expr, tc.wantExprType) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/lock.go new/tfupdate-0.10.3/tfupdate/lock.go --- old/tfupdate-0.10.2/tfupdate/lock.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/lock.go 2026-10-26 03:16:48.000000000 +0100 @@ -26,7 +26,7 @@ tfregistryConfig tfregistry.Config } -// NewLockUpdater is a factory method which returns an LockUpdater instance. +// NewLockUpdater is a factory method which returns a LockUpdater instance. func NewLockUpdater(platforms []string, tfregistryConfig tfregistry.Config) (Updater, error) { // Create a new index with the provided registry config index, err := lock.NewIndexFromConfig(tfregistryConfig) @@ -54,7 +54,7 @@ // updateLockfile updates the dependency lock file. func (u *LockUpdater) updateLockfile(ctx context.Context, mc *ModuleContext, f *hclwrite.File) error { - for _, p := range mc.SelecetedProviders() { + for _, p := range mc.SelectedProviders() { pAddr, err := u.fullyQualifiedProviderAddress(p.Source) if err != nil { // Unsupported formats, such as legacy abbreviated notation, will result @@ -133,7 +133,7 @@ return "", fmt.Errorf("failed to parse provider address: %s", address) } - // Since .terraform.lock.hcl was introduced from v0.14, we assume that + // Since .terraform.lock.hcl was introduced in v0.14, we assume that // provider address is qualified with namespaces at least. We won't support // implicit legacy things. if !pAddr.HasKnownNamespace() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/lock_test.go new/tfupdate-0.10.3/tfupdate/lock_test.go --- old/tfupdate-0.10.2/tfupdate/lock_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/lock_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -1126,7 +1126,7 @@ err = u.Update(context.Background(), mc, ".terraform.lock.hcl", f) if tc.ok && err != nil { - t.Errorf("faild to call Update: err = %s", err) + t.Errorf("failed to call Update: err = %s", err) } got := string(hclwrite.Format(f.BuildTokens(nil).Bytes())) @@ -1171,16 +1171,16 @@ } cases := []struct { - desc string - tfregstryConfig tfregistry.Config - src string - lockfile string - want string - ok bool + desc string + tfregistryConfig tfregistry.Config + src string + lockfile string + want string + ok bool }{ { desc: "simple", - tfregstryConfig: tfregistry.Config{ + tfregistryConfig: tfregistry.Config{ BaseURL: "https://registry.opentofu.org/", }, src: ` @@ -1246,7 +1246,7 @@ }, { desc: "create from empty", - tfregstryConfig: tfregistry.Config{ + tfregistryConfig: tfregistry.Config{ BaseURL: "https://registry.opentofu.org/", }, src: ` @@ -1319,7 +1319,7 @@ mockIndex := lock.NewMockIndex(pvs) // Create a LockUpdater with the tfregistryConfig - u, err := NewLockUpdater(platforms, tc.tfregstryConfig) + u, err := NewLockUpdater(platforms, tc.tfregistryConfig) // Replace the index with our mock for testing lu := u.(*LockUpdater) @@ -1340,7 +1340,7 @@ err = u.Update(context.Background(), mc, ".terraform.lock.hcl", f) if tc.ok && err != nil { - t.Errorf("faild to call Update: err = %s", err) + t.Errorf("failed to call Update: err = %s", err) } got := string(hclwrite.Format(f.BuildTokens(nil).Bytes())) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/module.go new/tfupdate-0.10.3/tfupdate/module.go --- old/tfupdate-0.10.2/tfupdate/module.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/module.go 2026-10-26 03:16:48.000000000 +0100 @@ -25,7 +25,7 @@ version string } -// NewModuleUpdater is a factory method which returns an ModuleUpdater instance. +// NewModuleUpdater is a factory method which returns a ModuleUpdater instance. func NewModuleUpdater(name string, version string, nameRegex *regexp.Regexp) (Updater, error) { if len(name) == 0 { return nil, errors.Errorf("failed to new module updater. name is required") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/option.go new/tfupdate-0.10.3/tfupdate/option.go --- old/tfupdate-0.10.2/tfupdate/option.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/option.go 2026-10-26 03:16:48.000000000 +0100 @@ -36,7 +36,7 @@ // An array of regular expression for paths to ignore. ignorePaths []*regexp.Regexp - // This field stores the compiled RE2 regex from the provide name parameter. + // This field stores the compiled RE2 regex from the provided name parameter. // In case the sourceMatchType is set to regex this field is used to match the name. // In case the provided sourceMatchType is full this field is nil. nameRegex *regexp.Regexp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/provider.go new/tfupdate-0.10.3/tfupdate/provider.go --- old/tfupdate-0.10.2/tfupdate/provider.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/provider.go 2026-10-26 03:16:48.000000000 +0100 @@ -19,7 +19,7 @@ version string } -// NewProviderUpdater is a factory method which returns an ProviderUpdater instance. +// NewProviderUpdater is a factory method which returns a ProviderUpdater instance. func NewProviderUpdater(name string, version string) (Updater, error) { if len(name) == 0 { return nil, errors.Errorf("failed to new provider updater. name is required") @@ -76,7 +76,7 @@ if hclAttr != nil { // There are some variations on the syntax of required_providers. // So we check a type of the value and switch implementations. - // If the expression can be parsed as a static expression and it's type is a primitive, + // If the expression can be parsed as a static expression and its type is a primitive, // then it's a legacy string syntax. if expr, err := hclAttr.Expr.Value(nil); err == nil && expr.Type().IsPrimitiveType() { u.updateTerraformRequiredProvidersBlockAsString(p) @@ -117,7 +117,7 @@ return nil } - // Updating the whole object loses original sort order and comments. + // Updating the whole object loses the original sort order and comments. // At the time of writing, there is no way to update a value inside an // object directly while preserving original tokens. // @@ -131,7 +131,7 @@ i := 0 // find key of version // Although not explicitly stated in the required_providers documentation, - // a TokenQuotedLit is also valid token. Strict speaking there are more + // a TokenQuotedLit is also valid token. Strictly speaking there are more // variants because the left hand side of object key accepts an expression in // HCL. For accurate implementation, it should be implemented using the // original parser. @@ -166,8 +166,8 @@ // the "version" key. // If the version key is missing, just returns an empty string without an error. func detectVersionInObject(hclAttr *hcl.Attribute) (string, error) { - // The configuration_aliases syntax isn't directly related version updateing, - // but it contains provider references and causes an parse error without an EvalContext. + // The configuration_aliases syntax isn't directly related version updating, + // but it contains provider references and causes a parse error without an EvalContext. // So we treat the expression as a hcl.ExprMap to avoid fully decoding the object. kvs, diags := hcl.ExprMap(hclAttr.Expr) if diags.HasErrors() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/terraform.go new/tfupdate-0.10.3/tfupdate/terraform.go --- old/tfupdate-0.10.2/tfupdate/terraform.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/terraform.go 2026-10-26 03:16:48.000000000 +0100 @@ -14,7 +14,7 @@ version string } -// NewTerraformUpdater is a factory method which returns an TerraformUpdater instance. +// NewTerraformUpdater is a factory method which returns a TerraformUpdater instance. func NewTerraformUpdater(version string) (Updater, error) { if len(version) == 0 { return nil, errors.Errorf("failed to new terraform updater. version is required") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/update.go new/tfupdate-0.10.3/tfupdate/update.go --- old/tfupdate-0.10.2/tfupdate/update.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/update.go 2026-10-26 03:16:48.000000000 +0100 @@ -41,7 +41,7 @@ // UpdateHCL reads HCL from io.Reader, updates version constraints // and writes updated contents to io.Writer. // If contents changed successfully, it returns true, or otherwise returns false. -// If an error occurs, Nothing is written to the output stream. +// If an error occurs, nothing is written to the output stream. func UpdateHCL(ctx context.Context, mc *ModuleContext, r io.Reader, w io.Writer, filename string) (bool, error) { input, err := io.ReadAll(r) if err != nil { @@ -69,8 +69,8 @@ } // safeParseConfig parses config and recovers if panic occurs. -// The current hclwrite implementation is no perfect and will panic if -// unparseable input is given. We just treat it as a parse error so as not to +// The current hclwrite implementation is not perfect and will panic if +// unparsable input is given. We just treat it as a parse error so as not to // surprise users of tfupdate. func safeParseConfig(src []byte, filename string, start hcl.Pos) (f *hclwrite.File, e error) { defer func() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tfupdate-0.10.2/tfupdate/update_test.go new/tfupdate-0.10.3/tfupdate/update_test.go --- old/tfupdate-0.10.2/tfupdate/update_test.go 2026-07-14 12:25:58.000000000 +0200 +++ new/tfupdate-0.10.3/tfupdate/update_test.go 2026-10-26 03:16:48.000000000 +0100 @@ -128,7 +128,7 @@ // the current implementation of (*hclwrite.Body).SetAttributeValue() // does not seem to preserve an original SpaceBefore value of attribute. // This is a bug of upstream. - // We avoid this by formating the output of this function. + // We avoid this by formatting the output of this function. want: ` terraform { required_version ="0.12.7" ++++++ tfupdate.obsinfo ++++++ --- /var/tmp/diff_new_pack.TzKXHa/_old 2026-10-29 16:11:45.122678690 +0100 +++ /var/tmp/diff_new_pack.TzKXHa/_new 2026-10-29 16:11:45.125678816 +0100 @@ -1,5 +1,5 @@ name: tfupdate -version: 0.10.2 -mtime: 1784024758 -commit: 304fee8b804ef1cc9f68e61f350dfa811b0e2226 +version: 0.10.3 +mtime: 1792981008 +commit: 3a7cae3176cf2383d61b5e4e04c71d35eae9f47b ++++++ vendor.tar.gz ++++++
