From 9696cafce527023f4a25153b7a083abcc1468b50 Mon Sep 17 00:00:00 2001 From: lourenco <> Date: Thu, 25 Sep 2025 12:22:10 +0200 Subject: [PATCH] added basic http routing; fixed git integration --- cmd/go-hugo-cms/main.go | 14 +++----------- pkg/git/git.go | 36 +++++++++++++++++++++--------------- pkg/http/http.go | 11 +++++++++++ 3 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 pkg/http/http.go diff --git a/cmd/go-hugo-cms/main.go b/cmd/go-hugo-cms/main.go index d5c70b0..c71df48 100644 --- a/cmd/go-hugo-cms/main.go +++ b/cmd/go-hugo-cms/main.go @@ -8,19 +8,11 @@ import ( func main() { options := git.GitOptions{ - URL: "https://git.assilvestrar.club/lourenco/go-hugo-cms.git", - } - _, err := options.Clone() - if err != nil { - fmt.Errorf("%w", err) + URL: "https://git.assilvestrar.club/lourenco/go-hugo-cms.git", + Name: "go-hugo-cms", } - _, err = options.Open() - if err != nil { - fmt.Errorf("%w", err) - } - - err = options.Fetch() + err := options.Fetch() if err != nil { fmt.Errorf("%w", err) } diff --git a/pkg/git/git.go b/pkg/git/git.go index c6bf7f8..1ee40a0 100644 --- a/pkg/git/git.go +++ b/pkg/git/git.go @@ -1,6 +1,8 @@ package git import ( + "fmt" + "io" "os" gogit "github.com/go-git/go-git/v5" @@ -12,25 +14,25 @@ type GitOptions struct { RecurseSubmodule bool } -func (g *GitOptions) Clone() (*gogit.Repository, error) { +func (g *GitOptions) Clone() error { a := &gogit.CloneOptions{ URL: g.URL, Progress: os.Stdout, } if err := a.Validate(); err != nil { - return nil, err + return err } if err := os.Mkdir(g.Name, 0750); err != nil && !os.IsExist(err) { - return nil, err + return err } - result, err := gogit.PlainClone(g.Name, false, a) + _, err := gogit.PlainClone(g.Name, false, a) if err != nil { - return nil, err + return err } - return result, nil + return nil } func (g *GitOptions) Open() (*gogit.Repository, error) { @@ -38,20 +40,24 @@ func (g *GitOptions) Open() (*gogit.Repository, error) { } 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 { + a := &gogit.FetchOptions{ + RemoteName: "origin", + Progress: os.Stdout, + } + if err := a.Validate(); err != nil { + return err + } + + if err = repo.Fetch(a); err != nil { + if err == gogit.NoErrAlreadyUpToDate { // not an actual error + io.WriteString(os.Stdout, fmt.Sprintln("already up to date")) // keeping this here just for debug + return nil + } return err } diff --git a/pkg/http/http.go b/pkg/http/http.go new file mode 100644 index 0000000..c8c53e8 --- /dev/null +++ b/pkg/http/http.go @@ -0,0 +1,11 @@ +package main + +import "github.com/gin-gonic/gin" + +func (c *ginContext) HttpHandler() { + r := gin.Default() + + r.GET("/list", g.listPosts()) + + r.Run() +}