mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-25 01:00:16 -05:00
Use hashicorp/terraform-registry-address as a decoupled library (#28338)
* refactor: Use tfaddr for provider address parsing * refactor: Use tfaddr for module address parsing * deps: introduce hashicorp/terraform-registry-address
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
package addrs
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
svchost "github.com/hashicorp/terraform-svchost"
|
||||
tfaddr "github.com/hashicorp/terraform-registry-address"
|
||||
)
|
||||
|
||||
// A ModulePackage represents a physical location where Terraform can retrieve
|
||||
@@ -45,45 +43,4 @@ func (p ModulePackage) String() string {
|
||||
// registry in order to find a real module package address. These being
|
||||
// distinct is intended to help future maintainers more easily follow the
|
||||
// series of steps in the module installer, with the help of the type checker.
|
||||
type ModuleRegistryPackage struct {
|
||||
Host svchost.Hostname
|
||||
Namespace string
|
||||
Name string
|
||||
TargetSystem string
|
||||
}
|
||||
|
||||
func (s ModuleRegistryPackage) String() string {
|
||||
var buf strings.Builder
|
||||
// Note: we're using the "display" form of the hostname here because
|
||||
// for our service hostnames "for display" means something different:
|
||||
// it means to render non-ASCII characters directly as Unicode
|
||||
// characters, rather than using the "punycode" representation we
|
||||
// use for internal processing, and so the "display" representation
|
||||
// is actually what users would write in their configurations.
|
||||
return s.Host.ForDisplay() + "/" + s.ForRegistryProtocol()
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func (s ModuleRegistryPackage) ForDisplay() string {
|
||||
if s.Host == DefaultModuleRegistryHost {
|
||||
return s.ForRegistryProtocol()
|
||||
}
|
||||
return s.Host.ForDisplay() + "/" + s.ForRegistryProtocol()
|
||||
}
|
||||
|
||||
// ForRegistryProtocol returns a string representation of just the namespace,
|
||||
// name, and target system portions of the address, always omitting the
|
||||
// registry hostname and the subdirectory portion, if any.
|
||||
//
|
||||
// This is primarily intended for generating addresses to send to the
|
||||
// registry in question via the registry protocol, since the protocol
|
||||
// skips sending the registry its own hostname as part of identifiers.
|
||||
func (s ModuleRegistryPackage) ForRegistryProtocol() string {
|
||||
var buf strings.Builder
|
||||
buf.WriteString(s.Namespace)
|
||||
buf.WriteByte('/')
|
||||
buf.WriteString(s.Name)
|
||||
buf.WriteByte('/')
|
||||
buf.WriteString(s.TargetSystem)
|
||||
return buf.String()
|
||||
}
|
||||
type ModuleRegistryPackage = tfaddr.ModulePackage
|
||||
|
||||
Reference in New Issue
Block a user