Skip to content
This repository was archived by the owner on Jun 11, 2021. It is now read-only.

Commit e9511e9

Browse files
committed
More refactoring of registry related code
1 parent 667b8f3 commit e9511e9

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

pkg/xterrafile/registry.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,36 @@ func IsRegistrySourceAddr(addr string) bool {
4141
}
4242

4343
// GetRegistrySource retrieves a modules download source from a Terraform registry
44-
func GetRegistrySource(name string, source string, version string) bool {
44+
func GetRegistrySource(name string, source string, version string, services *disco.Disco) string {
45+
4546
modSrc, err := getModSrc(source)
4647
CheckIfError(name, err)
4748

48-
version, err = getRegistryVersion(modSrc, version, nil)
49+
regClient := registry.NewClient(services, nil)
50+
51+
version, err = getRegistryVersion(regClient, modSrc, version)
4952
CheckIfError(name, err)
5053

51-
jww.ERROR.Printf("[%s] Found module version %s at %s", name, version, modSrc.Host())
54+
jww.INFO.Printf("[%s] Found module version %s at %s", name, version, modSrc.Host())
55+
56+
regSrc, err := regClient.ModuleLocation(modSrc, version)
57+
CheckIfError(name, err)
5258

53-
return true
59+
return regSrc
5460
}
5561

5662
// Helper function to return a valid version
57-
func getRegistryVersion(modSrc *regsrc.Module, version string, services *disco.Disco) (string, error) {
63+
func getRegistryVersion(c *registry.Client, modSrc *regsrc.Module, version string) (string, error) {
5864
// Don't log from Terraform's HTTP client
5965
log.SetFlags(0)
6066
log.SetOutput(ioutil.Discard)
6167

62-
regClient := registry.NewClient(services, nil)
63-
regClientResp, err := regClient.ModuleVersions(modSrc)
68+
validModuleVersionRange, err := semver.ParseRange(version)
6469
if err != nil {
6570
return "", err
6671
}
6772

68-
validModuleVersionRange, err := semver.ParseRange(version)
73+
regClientResp, err := c.ModuleVersions(modSrc)
6974
if err != nil {
7075
return "", err
7176
}

pkg/xterrafile/registry_test.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package xterrafile
33
import (
44
"testing"
55

6+
"github.com/hashicorp/terraform/registry"
67
"github.com/hashicorp/terraform/registry/test"
78
"github.com/stretchr/testify/assert"
89
)
@@ -22,16 +23,7 @@ func TestIsRegistrySourceAddr(t *testing.T) {
2223
}
2324

2425
func TestGetRegistrySource(t *testing.T) {
25-
assert.True(t, GetRegistrySource(
26-
"droplet",
27-
"terraform-digitalocean-modules/droplet/digitalocean",
28-
">=0.1.2"),
29-
"private registry path with sub-path should be true")
30-
// assert.True(t, GetRegistrySource(
31-
// "droplet2",
32-
// "app.terraform.io/terraform-digitalocean-modules/droplet/digitalocean",
33-
// ">= 1.0.0"),
34-
// "private registry path with sub-path should be true")
26+
3527
}
3628

3729
func TestGetModSrc(t *testing.T) {
@@ -55,17 +47,19 @@ func TestGetRegistryVersion(t *testing.T) {
5547
server := test.Registry()
5648
defer server.Close()
5749

50+
testClient := registry.NewClient(test.Disco(server), nil)
51+
5852
modSrc, _ := getModSrc("example.com/test-versions/name/provider")
59-
version, _ := getRegistryVersion(modSrc, ">= 2.0.0 < 2.2.0", test.Disco(server))
53+
version, _ := getRegistryVersion(testClient, modSrc, ">= 2.0.0 < 2.2.0")
6054
assert.Equal(t, "2.1.1", version, "version should be >= 2.0.0 < 2.2.0")
6155

62-
_, err := getRegistryVersion(modSrc, ">= 3.0.0", test.Disco(server))
56+
_, err := getRegistryVersion(testClient, modSrc, ">= 3.0.0")
6357
assert.Error(t, err, "should have returned an error")
6458

65-
_, err = getRegistryVersion(modSrc, "not.a.version", test.Disco(server))
59+
_, err = getRegistryVersion(testClient, modSrc, "not.a.version")
6660
assert.Error(t, err, "should return an error")
6761

6862
modSrc, _ = getModSrc("invalid.com/test-versions/name/provider")
69-
_, err = getRegistryVersion(modSrc, ">= 3.0.0", test.Disco(server))
63+
_, err = getRegistryVersion(testClient, modSrc, ">= 3.0.0")
7064
assert.Error(t, err, "should return an error")
7165
}

0 commit comments

Comments
 (0)