implemented git open and fetch

This commit is contained in:
lourenco
2025-09-22 15:07:35 +02:00
parent 6a53e4841b
commit 97adcc923c
2 changed files with 49 additions and 14 deletions

View File

@@ -1,7 +1,6 @@
package git
import (
"fmt"
"os"
gogit "github.com/go-git/go-git/v5"
@@ -9,29 +8,52 @@ import (
type GitOptions struct {
URL string
Name string
RecurseSubmodule bool
}
func (g *GitOptions) Clone() (string, error) {
func (g *GitOptions) Clone() (*gogit.Repository, error) {
a := &gogit.CloneOptions{
URL: g.URL,
Progress: os.Stdout,
}
if err := a.Validate(); err != nil {
return fmt.Sprintln("Validation failed"), err
return nil, err
}
dir, err := os.MkdirTemp("", "clone")
if err := os.Mkdir(g.Name, 0750); err != nil && !os.IsExist(err) {
return nil, err
}
result, err := gogit.PlainClone(g.Name, false, a)
if err != nil {
return "", err
return nil, err
}
defer os.RemoveAll(dir)
_, err = gogit.PlainClone(dir, false, a)
if err != nil {
return "", err
}
return "Success", nil
return result, nil
}
func (g *GitOptions) Open() (*gogit.Repository, error) {
return gogit.PlainOpen(g.Name)
}
func (g *GitOptions) Fetch() error {
a := &gogit.FetchOptions{
RemoteName: g.Name,
RemoteURL: g.URL,
}
if err := a.Validate(); err != nil {
return err
}
repo, err := g.Open()
if err != nil {
return err
}
if err := repo.Fetch(a); err != nil {
return err
}
return nil
}