github.com/defang-io/defang/src@v0.0.0-20240505002154-bdf411911834/pkg/cli/client/provider.go (about)

     1  package client
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  type Provider string
     9  
    10  const (
    11  	ProviderAuto   Provider = "auto"
    12  	ProviderDefang Provider = "defang"
    13  	ProviderAWS    Provider = "aws"
    14  	// ProviderAzure  Provider = "azure"
    15  	// ProviderGCP    Provider = "gcp"
    16  )
    17  
    18  var allProviders = []Provider{
    19  	ProviderAuto,
    20  	ProviderDefang,
    21  	ProviderAWS,
    22  	// ProviderAzure,
    23  	// ProviderGCP,
    24  }
    25  
    26  func (p Provider) String() string {
    27  	return string(p)
    28  }
    29  
    30  func (p *Provider) Set(str string) error {
    31  	str = strings.ToLower(str)
    32  	for _, provider := range allProviders {
    33  		if provider.String() == str {
    34  			*p = provider
    35  			return nil
    36  		}
    37  	}
    38  
    39  	return fmt.Errorf("available providers are: %v", allProviders)
    40  }
    41  
    42  func (p Provider) Type() string {
    43  	return "provider"
    44  }