Skip to content

Commit

Permalink
Extract setBucketArgument to a helper method
Browse files Browse the repository at this point in the history
  • Loading branch information
minamijoyo committed Feb 23, 2022
1 parent ac4b459 commit ac37781
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 17 deletions.
11 changes: 3 additions & 8 deletions filter/awsv4upgrade/aws_s3_bucket.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package awsv4upgrade

import (
"github.com/hashicorp/hcl/v2"
"github.com/hashicorp/hcl/v2/hclwrite"
"github.com/minamijoyo/hcledit/editor"
"github.com/minamijoyo/tfedit/tfeditor"
Expand Down Expand Up @@ -55,11 +54,7 @@ func (f *AWSS3BucketFilter) ResourceFilter(inFile *tfwrite.File, resource *tfwri
return m.ResourceFilter(inFile, resource)
}

// setBucketArgument is a helper method for setting a bucket argument to the given block.
func setBucketArgument(block *hclwrite.Block, resourceName string) *hclwrite.Attribute {
return block.Body().SetAttributeTraversal("bucket", hcl.Traversal{
hcl.TraverseRoot{Name: "aws_s3_bucket"},
hcl.TraverseAttr{Name: resourceName},
hcl.TraverseAttr{Name: "id"},
})
// setBucketArgument is a helper method for setting a bucket argument of a new `aws_s3_bucket_*` resource to the original `aws_s3_bucket` resource.
func setBucketArgument(newResource *tfwrite.Resource, oldResource *tfwrite.Resource) {
newResource.SetAttributeByReference("bucket", oldResource, "id")
}
4 changes: 1 addition & 3 deletions filter/awsv4upgrade/aws_s3_bucket_acl.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ func NewAWSS3BucketACLFilter() tfeditor.ResourceFilter {
// ResourceFilter upgrades the acl argument of aws_s3_bucket.
func (f *AWSS3BucketACLFilter) ResourceFilter(inFile *tfwrite.File, resource *tfwrite.Resource) (*tfwrite.File, error) {
oldAttribute := "acl"
oldResourceRefAttribute := "id"
newResourceType := "aws_s3_bucket_acl"
newResourceRefAttribute := "bucket"

attr := resource.GetAttribute(oldAttribute)
if attr == nil {
Expand All @@ -32,7 +30,7 @@ func (f *AWSS3BucketACLFilter) ResourceFilter(inFile *tfwrite.File, resource *tf
resourceName := resource.Name()
newResource := tfwrite.NewEmptyResource(newResourceType, resourceName)
inFile.AppendResource(newResource)
newResource.SetAttributeByReference(newResourceRefAttribute, resource, oldResourceRefAttribute)
setBucketArgument(newResource, resource)
newResource.AppendAttribute(attr)
resource.RemoveAttribute(oldAttribute)

Expand Down
4 changes: 1 addition & 3 deletions filter/awsv4upgrade/aws_s3_bucket_lifecycle_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,8 @@ func NewAWSS3BucketLifecycleRuleFilter() tfeditor.ResourceFilter {
// ResourceFilter upgrades the lifecycle_rule argument of aws_s3_bucket.
func (f *AWSS3BucketLifecycleRuleFilter) ResourceFilter(inFile *tfwrite.File, resource *tfwrite.Resource) (*tfwrite.File, error) {
oldNestedBlock := "lifecycle_rule"
oldResourceRefAttribute := "id"
newResourceType := "aws_s3_bucket_lifecycle_configuration"
newNestedBlock := "rule"
newResourceRefAttribute := "bucket"

nestedBlocks := resource.FindNestedBlocksByType(oldNestedBlock)
if len(nestedBlocks) == 0 {
Expand All @@ -34,7 +32,7 @@ func (f *AWSS3BucketLifecycleRuleFilter) ResourceFilter(inFile *tfwrite.File, re
resourceName := resource.Name()
newResource := tfwrite.NewEmptyResource(newResourceType, resourceName)
inFile.AppendResource(newResource)
newResource.SetAttributeByReference(newResourceRefAttribute, resource, oldResourceRefAttribute)
setBucketArgument(newResource, resource)

for _, nestedBlock := range nestedBlocks {
// Rename a `lifecycle_rule` block to a `rule` block
Expand Down
4 changes: 1 addition & 3 deletions filter/awsv4upgrade/aws_s3_bucket_logging.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ func NewAWSS3BucketLoggingFilter() tfeditor.ResourceFilter {
// ResourceFilter upgrades the logging argument of aws_s3_bucket.
func (f *AWSS3BucketLoggingFilter) ResourceFilter(inFile *tfwrite.File, resource *tfwrite.Resource) (*tfwrite.File, error) {
oldNestedBlock := "logging"
oldResourceRefAttribute := "id"
newResourceType := "aws_s3_bucket_logging"
newResourceRefAttribute := "bucket"

nestedBlocks := resource.FindNestedBlocksByType(oldNestedBlock)
if len(nestedBlocks) == 0 {
Expand All @@ -32,7 +30,7 @@ func (f *AWSS3BucketLoggingFilter) ResourceFilter(inFile *tfwrite.File, resource
resourceName := resource.Name()
newResource := tfwrite.NewEmptyResource(newResourceType, resourceName)
inFile.AppendResource(newResource)
newResource.SetAttributeByReference(newResourceRefAttribute, resource, oldResourceRefAttribute)
setBucketArgument(newResource, resource)
newResource.AppendUnwrappedNestedBlockBody(nestedBlocks[0])
resource.RemoveNestedBlock(nestedBlocks[0])

Expand Down

0 comments on commit ac37781

Please sign in to comment.