Provisioning: introduce interface for git clones (#103175)

* Delegate clone to export in migrate from API server

* Clonable interface

* Root from register.go

* Call option push on write

* Fix linting
This commit is contained in:
Roberto Jiménez Sánchez
2025-04-01 13:42:52 +03:00
committed by GitHub
parent f91f739ee2
commit 29f395e1dd
7 changed files with 136 additions and 131 deletions
@@ -36,6 +36,8 @@ type githubRepository struct {
owner string
repo string
cloneFn CloneFn
}
var (
@@ -45,6 +47,7 @@ var (
_ Writer = (*githubRepository)(nil)
_ Reader = (*githubRepository)(nil)
_ RepositoryWithURLs = (*githubRepository)(nil)
_ ClonableRepository = (*githubRepository)(nil)
)
func NewGitHub(
@@ -53,6 +56,7 @@ func NewGitHub(
factory *pgh.Factory,
secrets secrets.Service,
webhookURL string,
cloneFn CloneFn,
) (*githubRepository, error) {
owner, repo, err := parseOwnerRepo(config.Spec.GitHub.URL)
if err != nil {
@@ -73,6 +77,7 @@ func NewGitHub(
webhookURL: webhookURL,
owner: owner,
repo: repo,
cloneFn: cloneFn,
}, nil
}
@@ -896,6 +901,10 @@ func (r *githubRepository) OnDelete(ctx context.Context) error {
return r.deleteWebhook(ctx)
}
func (r *githubRepository) Clone(ctx context.Context, opts CloneOptions) (ClonedRepository, error) {
return r.cloneFn(ctx, opts)
}
func (r *githubRepository) logger(ctx context.Context, ref string) (context.Context, logging.Logger) {
logger := logging.FromContext(ctx)