package modules import ( "net/http" "gsg/internal/core" "gsg/internal/gitx" ) func init() { core.Register("commit", commitMod) core.Register("diff", diffMod) } // commit: metadata for the single commit at Ctx.Commit. func commitMod(c *core.Ctx, args ...string) (any, error) { if c.Commit == "" { return nil, core.Errorf(http.StatusNotFound, "no commit") } log, err := c.Repo.Log(c.Commit, 1, 0, false) if err != nil { return nil, err } if len(log) == 0 { return nil, core.Errorf(http.StatusNotFound, "commit %s not found", c.Commit) } return log[0], nil } // diff: the patch for Ctx.Commit. This is the module that static // generation made impractical -- here it is one git process, cached // forever against an immutable SHA. func diffMod(c *core.Ctx, args ...string) (any, error) { if c.Commit == "" { return gitx.Diff{}, nil } return c.Repo.DiffCommit(c.Commit) }