Move RemoteInfo and CloneProto to info package
This commit is contained in:
@ -4,24 +4,28 @@ import (
|
||||
"fmt"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/remote"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/info"
|
||||
)
|
||||
|
||||
type GiteaRemote struct {
|
||||
info *remote.RemoteInfo
|
||||
info *info.RemoteInfo
|
||||
api *gitea.Client
|
||||
}
|
||||
|
||||
func (r *GiteaRemote) GetInfo() *remote.RemoteInfo {
|
||||
func (r *GiteaRemote) GetInfo() *info.RemoteInfo {
|
||||
return r.info
|
||||
}
|
||||
|
||||
func (r *GiteaRemote) GetType() string {
|
||||
return r.info.Type
|
||||
}
|
||||
|
||||
func (r *GiteaRemote) String() string {
|
||||
return fmt.Sprintf("Gitea %s (%s), clone proto %s",
|
||||
r.GetInfo().Name, r.GetInfo().Host, r.GetInfo().CloneProto)
|
||||
}
|
||||
|
||||
func NewGiteaRemote(remoteInfo *remote.RemoteInfo) (*GiteaRemote, error) {
|
||||
func NewGiteaRemote(remoteInfo *info.RemoteInfo) (*GiteaRemote, error) {
|
||||
client, err := gitea.NewClient(remoteInfo.Host,
|
||||
gitea.SetContext(remoteInfo.Ctx),
|
||||
gitea.SetToken(remoteInfo.Token),
|
||||
|
@ -4,24 +4,28 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/xanzy/go-gitlab"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/remote"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/info"
|
||||
)
|
||||
|
||||
type GitlabRemote struct {
|
||||
info *remote.RemoteInfo
|
||||
info *info.RemoteInfo
|
||||
api *gitlab.Client
|
||||
}
|
||||
|
||||
func (r *GitlabRemote) GetInfo() *remote.RemoteInfo {
|
||||
func (r *GitlabRemote) GetInfo() *info.RemoteInfo {
|
||||
return r.info
|
||||
}
|
||||
|
||||
func (r *GitlabRemote) GetType() string {
|
||||
return r.info.Type
|
||||
}
|
||||
|
||||
func (r *GitlabRemote) String() string {
|
||||
return fmt.Sprintf("GitLab %s (%s), clone proto %s",
|
||||
r.GetInfo().Name, r.GetInfo().Host, r.GetInfo().CloneProto)
|
||||
}
|
||||
|
||||
func NewGitlabRemote(remoteInfo *remote.RemoteInfo) (*GitlabRemote, error) {
|
||||
func NewGitlabRemote(remoteInfo *info.RemoteInfo) (*GitlabRemote, error) {
|
||||
api, err := NewGitlabApi(remoteInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/xanzy/go-gitlab"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/info"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/remote"
|
||||
)
|
||||
@ -22,10 +23,10 @@ var (
|
||||
defApiWaitMax time.Duration = 5 * time.Second
|
||||
)
|
||||
|
||||
func NewGitlabApi(info *remote.RemoteInfo) (*gitlab.Client, error) {
|
||||
func NewGitlabApi(remoteInfo *info.RemoteInfo) (*gitlab.Client, error) {
|
||||
client, err := gitlab.NewClient(
|
||||
info.Token,
|
||||
gitlab.WithBaseURL(info.Host),
|
||||
remoteInfo.Token,
|
||||
gitlab.WithBaseURL(remoteInfo.Host),
|
||||
gitlab.WithCustomRetryWaitMinMax(defApiWaitMin, defApiWaitMax),
|
||||
)
|
||||
if err != nil {
|
||||
|
24
internal/remotes/info/info.go
Normal file
24
internal/remotes/info/info.go
Normal file
@ -0,0 +1,24 @@
|
||||
package info
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type CloneProto string
|
||||
|
||||
const (
|
||||
CloneProtoSSH CloneProto = "ssh"
|
||||
CloneProtoHTTP CloneProto = "http"
|
||||
DefaultCloneProto CloneProto = CloneProtoSSH
|
||||
)
|
||||
|
||||
// Globally shared info for all remote types
|
||||
// Stub package to prevent import cycle
|
||||
type RemoteInfo struct {
|
||||
Ctx context.Context
|
||||
Host string
|
||||
Name string
|
||||
Token string
|
||||
Type string
|
||||
CloneProto CloneProto
|
||||
}
|
@ -1,24 +1,15 @@
|
||||
package remote
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/config"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/info"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/load"
|
||||
)
|
||||
|
||||
type RemoteInfo struct {
|
||||
Ctx context.Context
|
||||
Host string
|
||||
Name string
|
||||
Token string
|
||||
CloneProto config.CloneProto
|
||||
}
|
||||
|
||||
const defNetDialTimeoutSecs = 3
|
||||
|
||||
// Any remote needs to be able to return
|
||||
@ -26,8 +17,9 @@ const defNetDialTimeoutSecs = 3
|
||||
// stream all projects along with updates to channels
|
||||
// provided by *load.ProgressInfo
|
||||
type Remote interface {
|
||||
GetInfo() *RemoteInfo // Returns basic RemoteInfo struct
|
||||
String() string // String info for remote
|
||||
GetInfo() *info.RemoteInfo // Returns basic RemoteInfo struct
|
||||
GetType() string // Returns the remote type (e.g. GitLab, Gitea)
|
||||
GetNumProjects(*RemoteQueryOpts) int // Returns total number of accessible projects
|
||||
StreamProjects(*load.ProgressInfo, *RemoteQueryOpts) // Streams projects to chans provided in load.ProgressInfo
|
||||
}
|
||||
@ -35,9 +27,9 @@ type Remote interface {
|
||||
func IsAlive(remote Remote) bool {
|
||||
var port int
|
||||
switch remote.GetInfo().CloneProto {
|
||||
case config.CloneProtoHTTP:
|
||||
case info.CloneProtoHTTP:
|
||||
port = 443
|
||||
case config.CloneProtoSSH:
|
||||
case info.CloneProtoSSH:
|
||||
port = 22
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user