"io/ioutil"
"os"
"regexp"
+ "sort"
"strings"
+ "text/scanner"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
notesTree *object.Tree
commentsRef *plumbing.Reference
commentsTree *object.Tree
+ topicsRef *plumbing.Reference
+ topicsTree *object.Tree
)
type Cfg struct {
CommentsNotesRef string
CommentsEmail string
+ TopicsNotesRef string
+ TopicsCachePath string
+
GopherDomain string
}
return comments
}
+func parseTopics(data []byte) []string {
+ var s scanner.Scanner
+ s.Init(bytes.NewBuffer(data))
+ topics := []string{}
+ for tok := s.Scan(); tok != scanner.EOF; tok = s.Scan() {
+ topics = append(topics, s.TokenText())
+ }
+ sort.Strings(topics)
+ return topics
+}
+
func initRepo(cfg *Cfg) (*plumbing.Hash, error) {
var err error
repo, err = git.PlainOpen(cfg.GitPath)
notesRef = ref
case cfg.CommentsNotesRef:
commentsRef = ref
+ case cfg.TopicsNotesRef:
+ topicsRef = ref
}
return nil
})
commentsTree, _ = commentsCommit.Tree()
}
}
+ if topicsRef != nil {
+ if topicsCommit, err := repo.CommitObject(topicsRef.Hash()); err == nil {
+ topicsTree, _ = topicsCommit.Tree()
+ }
+ }
}
return &headHash, nil
}