8 "github.com/hashicorp/terraform/svchost"
12 // DefaultProviderNamespace represents the namespace for canonical
13 // HashiCorp-controlled providers.
14 DefaultProviderNamespace = "-"
17 // TerraformProvider describes a Terraform Registry Provider source.
18 type TerraformProvider struct {
26 // NewTerraformProvider constructs a new provider source.
27 func NewTerraformProvider(name, os, arch string) *TerraformProvider {
35 // separate namespace if included
36 namespace := DefaultProviderNamespace
37 if names := strings.SplitN(name, "/", 2); len(names) == 2 {
38 namespace, name = names[0], names[1]
40 p := &TerraformProvider{
41 RawHost: PublicRegistryHost,
42 RawNamespace: namespace,
51 // Provider returns just the registry ID of the provider
52 func (p *TerraformProvider) TerraformProvider() string {
53 return fmt.Sprintf("%s/%s", p.RawNamespace, p.RawName)
56 // SvcHost returns the svchost.Hostname for this provider. The
57 // default PublicRegistryHost is returned.
58 func (p *TerraformProvider) SvcHost() (svchost.Hostname, error) {
59 return svchost.ForComparison(PublicRegistryHost.Raw)