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 io.WriteString(stdout, "Hello, world!\n")
17 log.WithPrefix("server.hooks").Debug("post-receive hook called", "repo", repo, "args", args)
18}
19
20// PreReceive is called by the git pre-receive hook.
21//
22// It implements Hooks.
23func (*Server) PreReceive(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, args []hooks.HookArg) {
24 log.WithPrefix("server.hooks").Debug("pre-receive hook called", "repo", repo, "args", args)
25}
26
27// Update is called by the git update hook.
28//
29// It implements Hooks.
30func (*Server) Update(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, arg hooks.HookArg) {
31 log.WithPrefix("server.hooks").Debug("update hook called", "repo", repo, "arg", arg)
32}
33
34// PostUpdate is called by the git post-update hook.
35//
36// It implements Hooks.
37func (s *Server) PostUpdate(stdin io.Reader, stdout io.Writer, stderr io.Writer, repo string, args ...string) {
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}