main
1package generator
2
3import (
4 "encoding/json"
5 "os"
6 "path/filepath"
7
8 "mokhan.ca/xlgmokha/gitmal/internal/git"
9)
10
11type BranchJSON struct {
12 Name string `json:"name"`
13 Commit BranchHead `json:"commit"`
14}
15
16type BranchHead struct {
17 SHA string `json:"sha"`
18}
19
20func GenerateBranchesJSON(branches []git.Ref, commitsFor map[git.Ref][]git.Commit, params Params) error {
21 list := make([]BranchJSON, 0, len(branches))
22 for _, branch := range branches {
23 commits := commitsFor[branch]
24 var sha string
25 if len(commits) > 0 {
26 sha = commits[0].Hash
27 }
28 list = append(list, BranchJSON{
29 Name: branch.String(),
30 Commit: BranchHead{SHA: sha},
31 })
32 }
33
34 outPath := filepath.Join(params.OutputDir, "branches.json")
35 f, err := os.Create(outPath)
36 if err != nil {
37 return err
38 }
39 defer f.Close()
40 encoder := json.NewEncoder(f)
41 encoder.SetIndent("", " ")
42 return encoder.Encode(list)
43}