diff --git a/cmd/go-hugo-cms/main.go b/cmd/go-hugo-cms/main.go new file mode 100644 index 0000000..4445d9c --- /dev/null +++ b/cmd/go-hugo-cms/main.go @@ -0,0 +1,14 @@ +package main + +import ( + "fmt" + + "git.assilvestrar.club/lourenco/go-hugo-cms.git/pkg/git" +) + +func main() { + options := git.GitOptions{ + URL: "https://git.assilvestrar.club/lourenco/go-hugo-cms.git", + } + fmt.Println(options.Clone()) +} diff --git a/pkg/git/git.go b/pkg/git/git.go new file mode 100644 index 0000000..d87c3a7 --- /dev/null +++ b/pkg/git/git.go @@ -0,0 +1,37 @@ +package git + +import ( + "fmt" + "os" + + gogit "github.com/go-git/go-git/v5" +) + +type GitOptions struct { + URL string + RecurseSubmodule bool +} + +func (g *GitOptions) Clone() (string, error) { + a := &gogit.CloneOptions{ + URL: g.URL, + Progress: os.Stdout, + } + if err := a.Validate(); err != nil { + return fmt.Sprintln("Validation failed"), err + } + + dir, err := os.MkdirTemp("", "clone") + if err != nil { + return "", err + } + + defer os.RemoveAll(dir) + + _, err = gogit.PlainClone(dir, false, a) + if err != nil { + return "", err + } + + return "Success", nil +}