code: func NewTerraformProvider(name, os, arch string) *TerraformProvider {
  	if os == "" {
  		os = runtime.GOOS
  	}
  	if arch == "" {
  		arch = runtime.GOARCH
  	}
  
  	// separate namespace if included
  	namespace := DefaultProviderNamespace
  	if names := strings.SplitN(name, "/", 2); len(names) == 2 {
  		namespace, name = names[0], names[1]
  	}
  	p := &TerraformProvider{
  		RawHost:      PublicRegistryHost,
  		RawNamespace: namespace,
  		RawName:      name,
  		OS:           os,
  		Arch:         arch,
  	}
  
  	return p
  }
docs: // NewTerraformProvider constructs a new provider source.