cli/api/mirror.go

54 lines
1.2 KiB
Go

package api
import (
"github.com/xanzy/go-gitlab"
)
type CreatePushMirrorOptions struct {
Url string
Enabled bool
OnlyProtectedBranches bool
KeepDivergentRefs bool
}
type CreatePullMirrorOptions struct {
Url string
Enabled bool
OnlyProtectedBranches bool
}
var CreatePushMirror = func(
client *gitlab.Client,
projectID interface{},
opts *CreatePushMirrorOptions,
) (*gitlab.ProjectMirror, error) {
if client == nil {
client = apiClient.Lab()
}
opt := &gitlab.AddProjectMirrorOptions{
URL: &opts.Url,
Enabled: &opts.Enabled,
OnlyProtectedBranches: &opts.OnlyProtectedBranches,
KeepDivergentRefs: &opts.KeepDivergentRefs,
}
pm, _, err := client.ProjectMirrors.AddProjectMirror(projectID, opt)
return pm, err
}
var CreatePullMirror = func(
client *gitlab.Client,
projectID interface{},
opts *CreatePullMirrorOptions,
) error {
if client == nil {
client = apiClient.Lab()
}
opt := &gitlab.EditProjectOptions{
ImportURL: &opts.Url,
Mirror: &opts.Enabled,
OnlyMirrorProtectedBranches: &opts.OnlyProtectedBranches,
}
_, _, err := client.Projects.EditProject(projectID, opt)
return err
}