package generator import ( "encoding/json" "os" "path/filepath" "mokhan.ca/xlgmokha/gitmal/internal/git" ) type BranchJSON struct { Name string `json:"name"` Commit BranchHead `json:"commit"` } type BranchHead struct { SHA string `json:"sha"` } func GenerateBranchesJSON(branches []git.Ref, commitsFor map[git.Ref][]git.Commit, params Params) error { list := make([]BranchJSON, 0, len(branches)) for _, branch := range branches { commits := commitsFor[branch] var sha string if len(commits) > 0 { sha = commits[0].Hash } list = append(list, BranchJSON{ Name: branch.String(), Commit: BranchHead{SHA: sha}, }) } outPath := filepath.Join(params.OutputDir, "branches.json") f, err := os.Create(outPath) if err != nil { return err } defer f.Close() encoder := json.NewEncoder(f) encoder.SetIndent("", " ") return encoder.Encode(list) }