Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: replace golang.org/x/exp with stdlib #3881

Merged
merged 1 commit into from
Feb 18, 2025

Conversation

Juneezee
Copy link
Contributor

@Juneezee Juneezee commented Feb 13, 2025

Description

The experimental functions are now available in the standard library in Go 1.21 (https://go.dev/doc/go1.21#slices) and Go 1.23 (https://go.dev/doc/go1.23#iterators).

The difference is that maps.Keys/maps.Values in the golang.org/x/exp/maps package return a slice, whereas maps.Keys/maps.Values in the standard library return an iterator. To work with slices, we need to use slices.Collect to convert the iterator into a slice.

TODOs

Read the Gruntwork contribution guidelines.

  • Run the relevant tests successfully, including pre-commit checks.
  • Include release notes. If this PR is backward incompatible, include a migration guide.

Release Notes (draft)

Replace golang.org/x/exp with stdlib

Migration Guide

Summary by CodeRabbit

  • Bug Fixes

    • Restored essential string processing for consistent CLI output.
  • Refactor

    • Migrated from experimental libraries to stable, built-in modules for slice and map operations.
  • Chores

    • Streamlined dependency management and updated project dependencies for improved maintainability.
  • Tests

    • Aligned test imports with the updated standard library usage.

Copy link

vercel bot commented Feb 13, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
terragrunt-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Feb 14, 2025 7:50pm

Copy link
Contributor

coderabbitai bot commented Feb 13, 2025

Walkthrough

The changes update numerous import statements across the project to replace experimental packages (such as "golang.org/x/exp/slices" and "golang.org/x/exp/maps") with their standard library counterparts ("slices" and "maps"). Additionally, the modifications reintroduce or reorder certain imports (like "strings"), update error message assembly in logging functions, and refactor sorting operations. The dependency management in go.mod has been restructured with several dependencies removed and re-added in a new grouping, while the overall control flow and functionality remain intact.

Changes

Files Change Summary
CLI & Internal Files
(cli/app.go, cli/commands/run/creds/getter.go, cli/commands/run/creds/providers/externalcmd/provider.go, cli/flags/flag_opts.go, internal/cli/bool_flag_test.go, internal/cli/help.go, internal/strict/category.go, internal/strict/control.go, internal/strict/controls/deprecated_env_var.go, internal/strict/controls/deprecated_flag_name.go, tf/getproviders/lock.go)
Updated import statements to use standard library packages (slices, maps, strings) instead of experimental versions; minor reordering and reintroduction of imports with no change to control flow.
pkg/log/format Files
(pkg/log/format/format.go, pkg/log/format/options/color.go, pkg/log/format/options/common.go, pkg/log/format/options/time_format.go)
Revised imports and error-handling logic to utilize standard library’s slices and maps, updating collection and sorting operations (e.g., switching from sort to slices.SortedFunc).
go.mod Restructured dependency management by removing and then reintroducing multiple dependencies with updated versions and reordering/grouping, alongside the addition of new dependencies.

Possibly Related PRs

  • fix: Correct displaying deprecated flag warnings #3880: This PR focuses on updating import statements in cli/app.go, while the retrieved PR involves significant modifications to the same file, including the removal of functions and restructuring of command handling, indicating a strong connection at the code level.

Suggested Reviewers

  • yhakbar
  • denis256

Poem

Code refactored and shining bright,
Imports streamlined into standard light.
Old experiments now laid to rest,
Dependencies sorted to work the best.
Happy code and cheers in flight!
🎉🚀


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
pkg/log/format/options/common.go (1)

114-114: Consider using slices.Collect for better performance

While slices.Sorted(maps.Values()) works, it creates an intermediate slice. Using slices.Collect(maps.Values()) would be more efficient as it directly collects the iterator values into a sorted slice.

-list := slices.Sorted(maps.Values(val.list))
+list := slices.Collect(maps.Values(val.list))
+slices.Sort(list)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a02986e and 4a41585.

📒 Files selected for processing (18)
  • cli/app.go (1 hunks)
  • cli/commands/run/creds/getter.go (1 hunks)
  • cli/commands/run/creds/providers/externalcmd/provider.go (1 hunks)
  • cli/flags/flag_opts.go (1 hunks)
  • go.mod (7 hunks)
  • internal/cli/bool_flag_test.go (1 hunks)
  • internal/cli/help.go (1 hunks)
  • internal/experiment/experiment.go (1 hunks)
  • internal/strict/category.go (1 hunks)
  • internal/strict/control.go (1 hunks)
  • internal/strict/controls/deprecated_env_var.go (1 hunks)
  • internal/strict/controls/deprecated_flag_name.go (1 hunks)
  • internal/strict/status.go (1 hunks)
  • pkg/log/format/format.go (2 hunks)
  • pkg/log/format/options/color.go (2 hunks)
  • pkg/log/format/options/common.go (2 hunks)
  • pkg/log/format/options/time_format.go (2 hunks)
  • tf/getproviders/lock.go (1 hunks)
✅ Files skipped from review due to trivial changes (12)
  • internal/strict/status.go
  • internal/experiment/experiment.go
  • cli/commands/run/creds/providers/externalcmd/provider.go
  • cli/commands/run/creds/getter.go
  • internal/cli/help.go
  • internal/strict/control.go
  • internal/strict/controls/deprecated_flag_name.go
  • internal/cli/bool_flag_test.go
  • cli/app.go
  • cli/flags/flag_opts.go
  • tf/getproviders/lock.go
  • internal/strict/controls/deprecated_env_var.go
🔇 Additional comments (8)
internal/strict/category.go (1)

3-7: Clean import update! 👍

The switch from golang.org/x/exp/slices to stdlib slices is spot on. The functionality remains identical, and we're now using the stable version.

pkg/log/format/options/time_format.go (1)

82-88: Nice use of slices.SortedFunc! 🎯

Great job using slices.SortedFunc with strings.Compare. This is the most idiomatic way to sort slices in Go 1.21+, and it makes the code more readable and maintainable.

pkg/log/format/format.go (1)

152-152: Perfect use of slices.Collect! ✨

Great job using slices.Collect to handle the iterator from maps.Keys. This is exactly how we should handle the transition from experimental packages to stdlib.

pkg/log/format/options/color.go (2)

4-5: LGTM! Good move to stdlib imports.

The switch from experimental packages to standard library imports is a solid improvement. This aligns perfectly with Go's stability guarantees.


111-111: LGTM! Nice use of slices.Collect.

The change to use slices.Collect(maps.Values()) is the right way to handle the iterator-to-slice conversion in Go 1.23.

go.mod (3)

266-281: LGTM! Well-documented replace directives.

The replace directives are clearly documented with the rationale for each replacement. This is super helpful for future maintenance.


3-3:

✅ Verification successful

Verify Go 1.23 compatibility.

The upgrade to Go 1.23 is needed for the stdlib maps and slices packages, but let's make sure it's a released version.


🌐 Web query:

What is the latest version of Go?

💡 Result:

The latest stable version of Go is 1.23, with the most recent minor revision being 1.23.6 (released February 4, 2025)[4]. This release follows Go's six-month release cycle, succeeding Go 1.22[3][4].

Key details about Go versions:

  • Go 1.23 introduced toolchain improvements while maintaining backward compatibility[3]
  • Security updates and bug fixes are regularly backported to previous major versions:
    • Go 1.22.x series has updates through 1.22.12[4]
    • Go 1.21.x series is supported up to 1.21.12[4]

For most users, upgrading to Go 1.23.x is recommended unless maintaining legacy systems requiring older versions[1][4]. The Go team maintains support for only the two most recent major versions (currently 1.22 and 1.23)[1][3].

Citations:


Go 1.23 Verified for Compatibility

Great news—the go.mod file now specifies go 1.23, which is confirmed as the latest stable version (with minor revisions like 1.23.6 already out). This upgrade is spot on for enabling the new stdlib packages such as maps and slices. No further changes are needed here.


254-254:

✅ Verification successful

Consider removing golang.org/x/exp dependency.

Since we're moving away from experimental packages to stdlib, we might be able to remove this dependency entirely if it's not used elsewhere.


🏁 Script executed:

#!/bin/bash
# Check if golang.org/x/exp is still used
rg -l "golang.org/x/exp"

Length of output: 38


Dependency Removal Check: golang.org/x/exp

It looks like the only references to golang.org/x/exp are in the go.mod (listed as an indirect dependency) and go.sum files—there’s no direct usage in the code. This indicates that if none of our code (or an essential transitive dependency) actively uses it, we can safely remove it. I'd recommend removing it from go.mod (and running a go mod tidy) to see if it cleans up without side effects. Please verify by running your tests to ensure that no library breaks as a result.

@yhakbar
Copy link
Collaborator

yhakbar commented Feb 13, 2025

Hey @Juneezee ,

Do you mind rebasing and running goimports to get deterministic sorting of your imports?

@Juneezee
Copy link
Contributor Author

@yhakbar Done! Please take a look again. Thank you 😊

@Juneezee
Copy link
Contributor Author

The recent PR #3880 also did some of the golang.org/x/exp/slices to slices conversion

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
go.mod (1)

37-41: Consider moving the comment above the dependency.

The comment explaining the version constraint for terraform would be more visible if placed directly above the dependency.

+// Many functions of terraform was converted to internal to avoid use as a library after v0.15.3. This means that we
+// can't use terraform as a library after v0.15.3, so we pull that in here.
 github.com/hashicorp/terraform v0.15.3
-// Many functions of terraform was converted to internal to avoid use as a library after v0.15.3. This means that we
-// can't use terraform as a library after v0.15.3, so we pull that in here.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4a41585 and 462b1f8.

📒 Files selected for processing (16)
  • cli/app.go (1 hunks)
  • cli/commands/run/creds/getter.go (1 hunks)
  • cli/commands/run/creds/providers/externalcmd/provider.go (1 hunks)
  • cli/flags/flag_opts.go (0 hunks)
  • go.mod (7 hunks)
  • internal/cli/bool_flag_test.go (1 hunks)
  • internal/cli/help.go (1 hunks)
  • internal/strict/category.go (1 hunks)
  • internal/strict/control.go (1 hunks)
  • internal/strict/controls/deprecated_env_var.go (0 hunks)
  • internal/strict/controls/deprecated_flag_name.go (0 hunks)
  • pkg/log/format/format.go (2 hunks)
  • pkg/log/format/options/color.go (2 hunks)
  • pkg/log/format/options/common.go (2 hunks)
  • pkg/log/format/options/time_format.go (2 hunks)
  • tf/getproviders/lock.go (1 hunks)
💤 Files with no reviewable changes (3)
  • internal/strict/controls/deprecated_env_var.go
  • internal/strict/controls/deprecated_flag_name.go
  • cli/flags/flag_opts.go
🚧 Files skipped from review as they are similar to previous changes (11)
  • internal/strict/category.go
  • cli/app.go
  • internal/cli/help.go
  • cli/commands/run/creds/providers/externalcmd/provider.go
  • internal/strict/control.go
  • tf/getproviders/lock.go
  • internal/cli/bool_flag_test.go
  • pkg/log/format/format.go
  • pkg/log/format/options/color.go
  • pkg/log/format/options/common.go
  • cli/commands/run/creds/getter.go
🔇 Additional comments (4)
pkg/log/format/options/time_format.go (2)

3-8: Nice work on the stdlib migration! 👍

Clean transition from experimental packages to standard library. The imports look good and align perfectly with the PR's goal.


82-88:

✅ Verification successful

Clean implementation using modern Go features! 🎯

The new implementation looks great! It's more concise and uses modern stdlib features effectively. Just want to double-check that the sorting behavior remains identical.

Let's verify the sorting behavior matches the old implementation:


🏁 Script executed:

#!/bin/bash
# Search for any tests that might be affected by this change
rg -l "SortedKeys.*Test" .

# Look for any other usage of this method
rg "SortedKeys\(\)" -A 3 -B 3

Length of output: 2212


Great job using modern Go constructs to streamline the sorting logic!

The new implementation using maps.Keys and slices.SortedFunc not only makes the code more concise but also preserves the expected behavior. I verified that its usage throughout the codebase—particularly in the pkg/log/format/options/time_format.go file and its related functions—remains consistent with the original intent, ensuring deterministic iteration order. Everything checks out.

go.mod (2)

266-281: LGTM! Well-documented replace directives.

The replace directives are well-documented with clear explanations for each constraint:

  • Handling 404 issues with atomicgo.dev
  • Managing Terraform version constraints
  • Working around Vault module issues
  • Managing TFLint license changes

3-3: ⚠️ Potential issue

✅ Verification successful

Verify Go version compatibility.

The module requires Go 1.23, but this version hasn't been released yet (current latest is 1.22).

Consider updating to Go 1.22 or the latest stable version:

-go 1.23
+go 1.22

🌐 Web query:

What is the latest version of Go?

💡 Result:

The latest stable version of Go is 1.23.6, released on February 4, 2025[3][4]. This follows the major release of Go 1.23 on August 13, 2024, which introduced toolchain and runtime improvements while maintaining compatibility with previous versions through Go's strict adherence to semantic versioning[3].

Key details about recent versions:

  • Go 1.23.x series has received six minor updates since its initial release, primarily addressing security vulnerabilities and bug fixes in components like crypto/elliptic and compiler optimizations[4]
  • The current support policy maintains compatibility with the two most recent major versions (1.22 and 1.23)[1]
  • Go's automatic toolchain upgrades (introduced in 1.21) ensure developers using recent versions can seamlessly update dependencies[1]

For most users, installing via go install golang.org/dl/go1.23.6@latest will provide the latest stable build[4].

Citations:


Heads-up: Go version is spot on.

The module specifies go 1.23 in go.mod, and with Go 1.23.6 being the latest stable release, this directive is correct. There's no need to roll it back to 1.22—everything is in line with the current Go release series.

@denis256
Copy link
Member

This branch has conflicts that must be resolved

go.mod

The experimental functions are now available in the standard library in
Go 1.21 [1] and Go 1.23 [2].

The difference is that `maps.Keys`/`maps.Values` in the
`golang.org/x/exp/maps` package return a slice, whereas
`maps.Keys`/`maps.Values` in the standard library return an iterator. To
work with slices, we need to use `slices.Collect` to convert the
iterator into a slice.

[1]: https://go.dev/doc/go1.21#slices
[2]: https://go.dev/doc/go1.23#iterators

Signed-off-by: Eng Zer Jun <[email protected]>
@Juneezee
Copy link
Contributor Author

Rebased

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
go.mod (2)

200-200: Klauspost Compress Update
Line 200 updates github.com/klauspost/compress v1.17.11. This library is essential for performance in compression tasks. The update seems proper, but a brief check on performance benchmarks might be worthwhile if compression efficiency is critical in your modules.


266-281: Replace Block Consistency
The replace block (lines 266–281) hasn’t changed in content, but the comments and remappings are crucial. In particular, the redirection for Terraform and Vault are key for your migration efforts. Verify that these replacements are documented in your migration guide and that they continue to resolve correctly when building the project.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 462b1f8 and 7785dd7.

📒 Files selected for processing (16)
  • cli/app.go (1 hunks)
  • cli/commands/run/creds/getter.go (1 hunks)
  • cli/commands/run/creds/providers/externalcmd/provider.go (1 hunks)
  • cli/flags/flag_opts.go (0 hunks)
  • go.mod (7 hunks)
  • internal/cli/bool_flag_test.go (1 hunks)
  • internal/cli/help.go (1 hunks)
  • internal/strict/category.go (1 hunks)
  • internal/strict/control.go (1 hunks)
  • internal/strict/controls/deprecated_env_var.go (0 hunks)
  • internal/strict/controls/deprecated_flag_name.go (0 hunks)
  • pkg/log/format/format.go (2 hunks)
  • pkg/log/format/options/color.go (2 hunks)
  • pkg/log/format/options/common.go (2 hunks)
  • pkg/log/format/options/time_format.go (2 hunks)
  • tf/getproviders/lock.go (1 hunks)
💤 Files with no reviewable changes (3)
  • internal/strict/controls/deprecated_flag_name.go
  • internal/strict/controls/deprecated_env_var.go
  • cli/flags/flag_opts.go
🚧 Files skipped from review as they are similar to previous changes (12)
  • cli/commands/run/creds/providers/externalcmd/provider.go
  • tf/getproviders/lock.go
  • cli/commands/run/creds/getter.go
  • cli/app.go
  • internal/cli/bool_flag_test.go
  • internal/cli/help.go
  • pkg/log/format/options/common.go
  • internal/strict/category.go
  • pkg/log/format/options/color.go
  • pkg/log/format/options/time_format.go
  • pkg/log/format/format.go
  • internal/strict/control.go
🔇 Additional comments (16)
go.mod (16)

10-10: Reintroducing aws-sdk-go
Line 10 reintroduces github.com/aws/aws-sdk-go v1.55.6. The pinning looks intentional. Just double-check that this version is compatible with the rest of your AWS packages and that it doesn’t conflict with the newer v2 dependency further down the list.


16-17: Verify Added Dependencies for PTY & Structs
Lines 16–17 reintroduce github.com/creack/pty v1.1.24 and github.com/fatih/structs v1.1.0. These entries appear to be re-added rather than upgraded. Confirm that these versions are still the best fit for your use cases and won’t cause transitive conflicts.


20-20: Check go-errors Package Update
Line 20 now pins github.com/go-errors/errors v1.5.1. This version looks deliberate. It might be worth ensuring any code using this package is compatible with this version update.


22-22: Review Google Shlex Version Pin
Line 22 reintroduces github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510. Since this is still an older pseudo-version, verify that no newer alternatives or fixes are required in your context.


27-29: Terratest & HashiCorp Dependencies Grouping
Lines 27–29 add back github.com/gruntwork-io/terratest v0.47.2, github.com/hashicorp/go-cleanhttp v0.5.2, and github.com/hashicorp/go-getter v1.7.8. These entries are crucial if your tests or internal modules depend on them. It might be a good idea to cross-check against the migration guide to ensure these versions align with your standard library migration efforts.


32-32: HashiCorp Toolkit Dependencies Review
The changes on lines 32 (go-multierror), 34 (go-safetemp), 35 (go-version), and 36 (hcl/v2) suggest careful version pinning of critical HashiCorp libraries. Ensuring that these remain compatible with both upstream changes and your internal Terraform usage is vital.

Also applies to: 34-36


46-46: Reintroduced go-zglob Dependency
Line 46 updates github.com/mattn/go-zglob v0.0.6. This update looks routine; just verify that any file system operations using this library work as expected.


49-51: Mitchellh Package Updates
Lines 49–51 update github.com/mitchellh/go-homedir, github.com/mitchellh/go-wordwrap, and github.com/mitchellh/mapstructure. These packages are common utilities, so confirming that any breaking changes (if any) are handled in your code would be a safe move.


56-58: Logging, Testing, and Linting Dependencies
Lines 56–58 update github.com/sirupsen/logrus v1.9.3, github.com/stretchr/testify v1.10.0, and github.com/terraform-linters/tflint v0.55.0. These are key for logging, unit tests, and linting. It’s good to see them pinned; just make sure your CI/CD pipeline and tests aren’t adversely affected by any subtle changes.


60-60: Confirm go-cty Update
Line 60 updates github.com/zclconf/go-cty v1.16.2. Given that this dependency might interact with the conversion from experimental collections to the stdlib, verifying its integration is advisable.


89-89: Cloud Google Package Version Update
Line 89 in the second require block now pins cloud.google.com/go v0.118.2 (indirect). This update should be checked for compatibility with your Google Cloud integrations—nothing major here, but a quick verification against your usage would be helpful.


253-254: Persistent x/crypto and x/exp Dependencies
Lines 253–254 update golang.org/x/crypto v0.32.0 and golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 as indirect dependencies. Note that even though the PR aims to replace experimental packages with the standard library, an entry for golang.org/x/exp still remains. It would be good to confirm whether this is brought in transitively or if it can eventually be removed.


256-256: x/time Dependency Verification
Line 256 updates golang.org/x/time v0.10.0. This is a straightforward update—just ensure it aligns with any timing or context-related functions that might interact with your stdlib replacements.


258-258: Genproto Update Check
Line 258 updates google.golang.org/genproto to v0.0.0-20250204164813-702378808489. It’s a minor dependency update, but do verify that API changes (if any) are compatible with your current codebase.


222-222: OTP Package Revision
Line 222 updates github.com/pquerna/otp v1.4.0. If your project uses OTP generation or validation, confirm that any API changes or deprecations in this version are handled gracefully.


236-236: ulikunitz/xz Dependency Check
Line 236 now sets github.com/ulikunitz/xz v0.5.12. This appears standard—just ensure that any archive or decompression functions relying on it work correctly.

Comment on lines +40 to +41
github.com/hashicorp/terraform v0.15.3
github.com/hashicorp/terraform-config-inspect v0.0.0-20210318070130-9a80970d6b34
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Terraform Dependency Internalization
Lines 40–41 reintroduce github.com/hashicorp/terraform v0.15.3 and github.com/hashicorp/terraform-config-inspect v0.0.0-20210318070130-9a80970d6b34. The accompanying comments explain the rationale. Since Terraform’s functions are now internal, please ensure that your migration guide documents this backward-incompatible change clearly for future maintainers.

@yhakbar yhakbar merged commit 642d902 into gruntwork-io:main Feb 18, 2025
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants