1package server
 2
 3import (
 4	"io"
 5
 6	"github.com/charmbracelet/log"
 7	"github.com/charmbracelet/soft-serve/server/hooks"
 8)
 9
10var _ hooks.Hooks = (*Server)(nil)
11
12// PostReceive is called by the git post-receive hook.
13//
14// It implements Hooks.
15func (*Server) PostReceive(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, args []hooks.HookArg) {
16	log.WithPrefix("server.hooks").Debug("post-receive hook called", "repo", repo, "args", args)
17}
18
19// PreReceive is called by the git pre-receive hook.
20//
21// It implements Hooks.
22func (*Server) PreReceive(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, args []hooks.HookArg) {
23	log.WithPrefix("server.hooks").Debug("pre-receive hook called", "repo", repo, "args", args)
24}
25
26// Update is called by the git update hook.
27//
28// It implements Hooks.
29func (*Server) Update(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, arg hooks.HookArg) {
30	log.WithPrefix("server.hooks").Debug("update hook called", "repo", repo, "arg", arg)
31}
32
33// PostUpdate is called by the git post-update hook.
34//
35// It implements Hooks.
36func (s *Server) PostUpdate(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, args ...string) {
37	log.WithPrefix("server.hooks").Debug("post-update hook called", "repo", repo, "args", args)
38	rr, err := s.Config.Backend.Repository(repo)
39	if err != nil {
40		log.WithPrefix("server.hooks.post-update").Error("error getting repository", "repo", repo, "err", err)
41		return
42	}
43
44	r, err := rr.Open()
45	if err != nil {
46		log.WithPrefix("server.hooks.post-update").Error("error opening repository", "repo", repo, "err", err)
47		return
48	}
49
50	if err := r.UpdateServerInfo(); err != nil {
51		log.WithPrefix("server.hooks.post-update").Error("error updating server info", "repo", repo, "err", err)
52		return
53	}
54}