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

     1  package client
     2  
     3  import (
     4  	"context"
     5  
     6  	compose "github.com/compose-spec/compose-go/v2/types"
     7  	defangv1 "github.com/defang-io/defang/src/protos/io/defang/v1"
     8  )
     9  
    10  type ServerStream[Res any] interface {
    11  	Close() error
    12  	Receive() bool
    13  	Msg() *Res
    14  	Err() error
    15  }
    16  
    17  type ETag = string
    18  
    19  type ProjectLoader interface {
    20  	LoadWithDefaultProjectName(string) (*compose.Project, error)
    21  	LoadWithProjectName(string) (*compose.Project, error)
    22  }
    23  
    24  type Client interface {
    25  	// Promote(google.protobuf.Empty) returns (google.protobuf.Empty);
    26  	// Subscribe(context.Context, *v1.SubscribeRequest) (*v1.SubscribeResponse, error)
    27  	// Update(context.Context, *v1.Service) (*v1.ServiceInfo, error)
    28  	AgreeToS(context.Context) error
    29  	BootstrapCommand(context.Context, string) (ETag, error)
    30  	BootstrapList(context.Context) error
    31  	CheckLoginAndToS(context.Context) error
    32  	CreateUploadURL(context.Context, *defangv1.UploadURLRequest) (*defangv1.UploadURLResponse, error)
    33  	DelegateSubdomainZone(context.Context, *defangv1.DelegateSubdomainZoneRequest) (*defangv1.DelegateSubdomainZoneResponse, error)
    34  	// Deprecated: Use Deploy or Destroy instead.
    35  	Delete(context.Context, *defangv1.DeleteRequest) (*defangv1.DeleteResponse, error)
    36  	DeleteConfig(context.Context, *defangv1.Secrets) error
    37  	DeleteSubdomainZone(context.Context) error
    38  	Deploy(context.Context, *defangv1.DeployRequest) (*defangv1.DeployResponse, error)
    39  	Destroy(context.Context) (ETag, error)
    40  	GenerateFiles(context.Context, *defangv1.GenerateFilesRequest) (*defangv1.GenerateFilesResponse, error)
    41  	Get(context.Context, *defangv1.ServiceID) (*defangv1.ServiceInfo, error)
    42  	GetDelegateSubdomainZone(context.Context) (*defangv1.DelegateSubdomainZoneResponse, error)
    43  	GetServices(context.Context) (*defangv1.ListServicesResponse, error)
    44  	GetVersions(context.Context) (*defangv1.Version, error)
    45  	ListConfig(context.Context) (*defangv1.Secrets, error)
    46  	Publish(context.Context, *defangv1.PublishRequest) error
    47  	PutConfig(context.Context, *defangv1.SecretValue) error
    48  	Restart(context.Context, ...string) (ETag, error)
    49  	RevokeToken(context.Context) error
    50  	ServiceDNS(name string) string
    51  	Tail(context.Context, *defangv1.TailRequest) (ServerStream[defangv1.TailResponse], error)
    52  	TearDown(context.Context) error
    53  	Token(context.Context, *defangv1.TokenRequest) (*defangv1.TokenResponse, error)
    54  	Track(string, ...Property) error
    55  	WhoAmI(context.Context) (*defangv1.WhoAmIResponse, error)
    56  
    57  	LoadProject() (*compose.Project, error)
    58  }
    59  
    60  type Property struct {
    61  	Name  string
    62  	Value any
    63  }