Skip to content

Commit

Permalink
Merge pull request #19 from kishaningithub/fix-wire-up
Browse files Browse the repository at this point in the history
Refactor logic to be more type sensitive
  • Loading branch information
kishaningithub committed May 7, 2024
2 parents 7a0065b + 2b21377 commit a555cf5
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 13 deletions.
6 changes: 3 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ terraform show -json | tf-import-gen aws_instance.example module.example
terraform show -json | tf-import-gen
`,
RunE: func(cmd *cobra.Command, args []string) error {
address := ""
addresses := []string{""}
if len(os.Args) > 1 {
address = os.Args[1]
addresses = os.Args[1:]
}
imports, err := tfimportgen.GenerateImports(os.Stdin, address)
imports, err := tfimportgen.GenerateImports(os.Stdin, addresses)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/internal/parser/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ type TerraformResource struct {

type TerraformResources []TerraformResource

func (resources TerraformResources) FilterByAddresses(addresses ...string) TerraformResources {
func (resources TerraformResources) FilterByAddresses(addresses []string) TerraformResources {
var filteredResources TerraformResources
for _, resource := range resources {
for _, address := range addresses {
Expand Down
6 changes: 4 additions & 2 deletions pkg/tfimportgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import (
"io"
)

func GenerateImports(stateJsonReader io.Reader, address ...string) (TerraformImports, error) {
func GenerateImports(stateJsonReader io.Reader, addresses []string) (TerraformImports, error) {
resources, err := parser.NewTerraformStateJsonParser(stateJsonReader).Parse()
if err != nil {
return nil, err
}

resources = resources.FilterByAddresses(address...)
if addresses != nil {
resources = resources.FilterByAddresses(addresses)
}

var imports TerraformImports
for _, resource := range resources {
Expand Down
23 changes: 16 additions & 7 deletions pkg/tfimportgen_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package tfimportgen_test

import (
"bytes"
tfimportgen "github.com/kishaningithub/tf-import-gen/pkg"
"github.com/stretchr/testify/require"
"io"
"os"
"path/filepath"
"testing"
Expand Down Expand Up @@ -71,9 +73,16 @@ func Test_GenerateImports_ShouldGenerateImportsForAllResourcesWhenNoFiltersAreGi
t.Cleanup(func() {
_ = stateJsonFile.Close()
})
stateJsonFileBytes, err := io.ReadAll(stateJsonFile)
require.NoError(t, err)
stateJson := bytes.NewBuffer(stateJsonFileBytes)

actual, err := tfimportgen.GenerateImports(stateJsonFile, "")
actual, err := tfimportgen.GenerateImports(stateJson, []string{""})
require.NoError(t, err)
require.Equal(t, tt.expected, actual)

stateJson = bytes.NewBuffer(stateJsonFileBytes)
actual, err = tfimportgen.GenerateImports(stateJson, nil)
require.NoError(t, err)
require.Equal(t, tt.expected, actual)
})
Expand All @@ -83,12 +92,12 @@ func Test_GenerateImports_ShouldGenerateImportsForAllResourcesWhenNoFiltersAreGi
func Test_GenerateImports_ShouldGenerateImportsForResourcesForGivenAddress(t *testing.T) {
tests := []struct {
name string
address string
address []string
expected tfimportgen.TerraformImports
}{
{
name: "filtering by module",
address: "module.test_mwaa",
address: []string{"module.test_mwaa"},
expected: tfimportgen.TerraformImports{
{
ResourceAddress: "module.test_mwaa.aws_iam_policy.test_mwaa_permissions",
Expand All @@ -104,7 +113,7 @@ func Test_GenerateImports_ShouldGenerateImportsForResourcesForGivenAddress(t *te
},
{
name: "filtering by resource",
address: "aws_glue_catalog_database.test_db",
address: []string{"aws_glue_catalog_database.test_db"},
expected: tfimportgen.TerraformImports{
{
ResourceAddress: "aws_glue_catalog_database.test_db",
Expand Down Expand Up @@ -138,7 +147,7 @@ func Test_GenerateImports_ShouldGenerateHelpfulCommentForResourceThatCannotBeImp
_ = stateJsonFile.Close()
})

actual, err := tfimportgen.GenerateImports(stateJsonFile, "")
actual, err := tfimportgen.GenerateImports(stateJsonFile, []string{""})

require.NoError(t, err)
expectedImports := tfimportgen.TerraformImports{
Expand All @@ -156,7 +165,7 @@ func Test_GenerateImports_ShouldGenerateHelpfulCommentForResourceThatCannotBeImp
require.Equal(t, expectedImports, actual)
}

func Test_GenerateImports_ShouldGenerateImportsForResourcesForGivenAddresses(t *testing.T) {
func Test_GenerateImports_ShouldGenerateImportsForResourcesForMultipleAddresses(t *testing.T) {
tests := []struct {
name string
address []string
Expand Down Expand Up @@ -193,7 +202,7 @@ func Test_GenerateImports_ShouldGenerateImportsForResourcesForGivenAddresses(t *
_ = stateJsonFile.Close()
})

actual, err := tfimportgen.GenerateImports(stateJsonFile, tt.address...)
actual, err := tfimportgen.GenerateImports(stateJsonFile, tt.address)

require.NoError(t, err)
require.Equal(t, tt.expected, actual)
Expand Down

0 comments on commit a555cf5

Please sign in to comment.