pkg/gitops/flux/git.go (93 lines of code) (raw):
package flux
import (
"context"
"github.com/aws/eks-anywhere/pkg/git"
gitFactory "github.com/aws/eks-anywhere/pkg/git/factory"
"github.com/aws/eks-anywhere/pkg/retrier"
)
type gitClient struct {
git git.Client
gitProvider git.ProviderClient
*retrier.Retrier
}
func newGitClient(gitTools *gitFactory.GitTools) *gitClient {
if gitTools == nil {
return nil
}
return &gitClient{
git: gitTools.Client,
gitProvider: gitTools.Provider,
Retrier: retrier.NewWithMaxRetries(maxRetries, backOffPeriod),
}
}
func (c *gitClient) GetRepo(ctx context.Context) (repo *git.Repository, err error) {
if c.gitProvider == nil {
return nil, nil
}
err = c.Retry(
func() error {
repo, err = c.gitProvider.GetRepo(ctx)
return err
},
)
return repo, err
}
func (c *gitClient) CreateRepo(ctx context.Context, opts git.CreateRepoOpts) error {
if c.gitProvider == nil {
return nil
}
return c.Retry(
func() error {
_, err := c.gitProvider.CreateRepo(ctx, opts)
return err
},
)
}
func (c *gitClient) Clone(ctx context.Context) error {
return c.Retry(
func() error {
return c.git.Clone(ctx)
},
)
}
func (c *gitClient) Push(ctx context.Context) error {
return c.Retry(
func() error {
return c.git.Push(ctx)
},
)
}
func (c *gitClient) Pull(ctx context.Context, branch string) error {
return c.Retry(
func() error {
return c.git.Pull(ctx, branch)
},
)
}
func (c *gitClient) PathExists(ctx context.Context, owner, repo, branch, path string) (exists bool, err error) {
if c.gitProvider == nil {
return false, nil
}
err = c.Retry(
func() error {
exists, err = c.gitProvider.PathExists(ctx, owner, repo, branch, path)
return err
},
)
return exists, err
}
func (c *gitClient) Add(filename string) error {
return c.git.Add(filename)
}
func (c *gitClient) Remove(filename string) error {
return c.git.Remove(filename)
}
func (c *gitClient) Commit(message string) error {
return c.git.Commit(message)
}
func (c *gitClient) Branch(name string) error {
return c.git.Branch(name)
}
func (c *gitClient) Init() error {
return c.git.Init()
}