Skip to content

Commit

Permalink
Don't error on already mapped tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
iwahbe committed Oct 9, 2023
1 parent e3aabd3 commit 8f2f286
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 9 deletions.
25 changes: 16 additions & 9 deletions pkg/tfbridge/tokens/known_modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (

func knownModules[T b.ResourceInfo | b.DataSourceInfo](
prefix, defaultModule string, modules []string,
apply func(string, string, *T) error,
apply func(string, string, *T, error) error,
moduleTransform func(string) string,
) b.ElementStrategy[T] {
return func(tfToken string, elem *T) error {
Expand All @@ -41,10 +41,11 @@ func knownModules[T b.ResourceInfo | b.DataSourceInfo](
break
}
}
var err error
if mod == "" {
return fmt.Errorf("could not find a module that prefixes '%s' in '%#v'", tk, modules)
err = fmt.Errorf("could not find a module that prefixes '%s' in '%#v'", tk, modules)
}
return apply(moduleTransform(mod), upperCamelCase(strings.TrimPrefix(tk, mod)), elem)
return apply(moduleTransform(mod), upperCamelCase(strings.TrimPrefix(tk, mod)), elem, err)
}
}

Expand All @@ -67,12 +68,15 @@ func KnownModules(
}
}

func knownResource(finalize Make) func(mod, tk string, r *b.ResourceInfo) error {
return func(mod, tk string, r *b.ResourceInfo) error {
func knownResource(finalize Make) func(mod, tk string, r *b.ResourceInfo, err error) error {
return func(mod, tk string, r *b.ResourceInfo, err error) error {
if r.Tok != "" {
return nil
}
tk, err := finalize(mod, tk)
if err != nil {
return err
}
tk, err = finalize(mod, tk)
if err != nil {
return err
}
Expand All @@ -81,12 +85,15 @@ func knownResource(finalize Make) func(mod, tk string, r *b.ResourceInfo) error
}
}

func knownDataSource(finalize Make) func(mod, tk string, d *b.DataSourceInfo) error {
return func(mod, tk string, d *b.DataSourceInfo) error {
func knownDataSource(finalize Make) func(mod, tk string, d *b.DataSourceInfo, err error) error {
return func(mod, tk string, d *b.DataSourceInfo, err error) error {
if d.Tok != "" {
return nil
}
tk, err := finalize(mod, "get"+tk)
if err != nil {
return err
}
tk, err = finalize(mod, "get"+tk)
if err != nil {
return err
}
Expand Down
22 changes: 22 additions & 0 deletions pkg/tfbridge/tokens_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,28 @@ func TestTokensKnownModules(t *testing.T) {
}, info.Resources)
}

func TestTokensKnownModulesAlreadyMapped(t *testing.T) {
info := tfbridge.ProviderInfo{
P: (&schema.Provider{
ResourcesMap: schema.ResourceMap{
"pkg_m1_fizz": nil,
"pkg_m2_buzz": nil,
},
}).Shim(),
Resources: map[string]*tfbridge.ResourceInfo{
"pkg_m2_buzz": {Tok: "pkg:index:Buzz"},
},
}

err := info.ComputeTokens(tokens.KnownModules(
"pkg_", "", []string{"m1"}, tokens.MakeStandard("pkg")))
require.NoError(t, err)
assert.Equal(t, map[string]*tfbridge.ResourceInfo{
"pkg_m1_fizz": {Tok: "pkg:m1/fizz:Fizz"},
"pkg_m2_buzz": {Tok: "pkg:index:Buzz"},
}, info.Resources)
}

func TestTokensMappedModules(t *testing.T) {
info := tfbridge.ProviderInfo{
P: (&schema.Provider{
Expand Down

0 comments on commit 8f2f286

Please sign in to comment.