package remote import ( "context" "gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/load" ) type RemoteInfo struct { Ctx context.Context Host string Name string Token string } type RemoteProto string const ( RemoteProtoSSH RemoteProto = "ssh" RemoteProtoHTTP RemoteProto = "http" RemoteProtoHTTPS RemoteProto = "https" ) // Any remote needs to be able to return // the number of projects the user has access to and also // stream all projects along with updates to channels // provided by *load.ProgressInfo type Remote interface { GetInfo() *RemoteInfo // Returns basic RemoteInfo struct IsAlive(RemoteProto) bool // Indicates if the remote is reachable by either SSH or HTTP GetNumProjects(*RemoteQueryOpts) int // Returns total number of accessible projects StreamProjects(*load.ProgressInfo, *RemoteQueryOpts) // Streams projects to chans provided in load.ProgressInfo }