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