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