aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2024-06-25 20:37:40 +0200
committerGabriel A. Giovanini <mail@gabrielgio.me>2024-06-25 20:37:40 +0200
commit907c13566c775ac1210bc66de99f7273e7c8a507 (patch)
treeb2c3f6a647441d452e8a5c119f7d00dd947b7dff /pkg
parent75d3ee252e7d966055bb76258d3e0da28488d261 (diff)
downloadcerrado-907c13566c775ac1210bc66de99f7273e7c8a507.tar.gz
cerrado-907c13566c775ac1210bc66de99f7273e7c8a507.tar.bz2
cerrado-907c13566c775ac1210bc66de99f7273e7c8a507.zip
feat: Add commit page
Diffstat (limited to 'pkg')
-rw-r--r--pkg/handler/git/handler.go22
-rw-r--r--pkg/handler/router.go1
-rw-r--r--pkg/service/git.go19
3 files changed, 42 insertions, 0 deletions
diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go
index 0963033..fd62e44 100644
--- a/pkg/handler/git/handler.go
+++ b/pkg/handler/git/handler.go
@@ -34,6 +34,7 @@ type (
gitService interface {
ListRepositories() ([]*service.Repository, error)
ListCommits(name string, ref string, count int) ([]*object.Commit, error)
+ LastCommit(name string, ref string) (*object.Commit, error)
GetHead(name string) (*plumbing.Reference, error)
GetTree(name, ref, path string) (*object.Tree, error)
IsBinary(name, ref, path string) (bool, error)
@@ -331,6 +332,27 @@ func (g *GitHandler) Log(w http.ResponseWriter, r *http.Request) error {
return nil
}
+func (g *GitHandler) Commit(w http.ResponseWriter, r *http.Request) error {
+ ext.SetHTML(w)
+ name := r.PathValue("name")
+ ref := r.PathValue("ref")
+
+ commit, err := g.gitService.LastCommit(name, ref)
+ if err != nil {
+ return err
+ }
+
+ gitList := &templates.GitItemPage{
+ Name: name,
+ Ref: ref,
+ GitItemBase: &templates.GitItemCommitPage{
+ Commit: commit,
+ },
+ }
+ templates.WritePageTemplate(w, gitList)
+ return nil
+}
+
func GetLexers(filename string) chroma.Lexer {
if filename == "APKBUILD" {
return lexers.Get("sh")
diff --git a/pkg/handler/router.go b/pkg/handler/router.go
index 6ee7ba3..f464ac2 100644
--- a/pkg/handler/router.go
+++ b/pkg/handler/router.go
@@ -41,6 +41,7 @@ func MountHandler(
mux.HandleFunc("/{name}/tree/{ref}/{rest...}", gitHandler.Tree)
mux.HandleFunc("/{name}/blob/{ref}/{rest...}", gitHandler.Blob)
mux.HandleFunc("/{name}/log/{ref}/", gitHandler.Log)
+ mux.HandleFunc("/{name}/commit/{ref}/", gitHandler.Commit)
mux.HandleFunc("/{name}/archive/{file}", gitHandler.Archive)
mux.HandleFunc("/config", configHandler)
mux.HandleFunc("/about", aboutHandler.About)
diff --git a/pkg/service/git.go b/pkg/service/git.go
index 1d21204..df4e3aa 100644
--- a/pkg/service/git.go
+++ b/pkg/service/git.go
@@ -94,6 +94,25 @@ func (g *GitService) ListCommits(name, ref string, count int) ([]*object.Commit,
return repo.Commits(count)
}
+func (g *GitService) LastCommit(name, ref string) (*object.Commit, error) {
+ r := g.configRepo.GetByName(name)
+ if r == nil {
+ return nil, ErrRepositoryNotFound
+ }
+
+ repo, err := git.OpenRepository(r.Path)
+ if err != nil {
+ return nil, err
+ }
+
+ err = repo.SetRef(ref)
+ if err != nil {
+ return nil, err
+ }
+
+ return repo.LastCommit()
+}
+
func (g *GitService) WriteTarGZip(w io.Writer, name, ref string, prefix string) error {
r := g.configRepo.GetByName(name)
if r == nil {