diff options
Diffstat (limited to 'pkg/handler')
-rw-r--r-- | pkg/handler/git/handler.go | 22 | ||||
-rw-r--r-- | pkg/handler/router.go | 1 |
2 files changed, 23 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) |