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}