diff options
Diffstat (limited to 'stat.makeRemote.go')
| -rw-r--r-- | stat.makeRemote.go | 82 |
1 files changed, 34 insertions, 48 deletions
diff --git a/stat.makeRemote.go b/stat.makeRemote.go index 685238a..f583d2d 100644 --- a/stat.makeRemote.go +++ b/stat.makeRemote.go @@ -22,7 +22,7 @@ func (r *Repo) LoadRemote(remoteName string) (*Stats, error) { return stats, err } -var standardFmts []string = []string{"H", "T", "at", "ct", "f"} +var standardFmts []string = []string{"H", "T", "at", "ct", "f", "d"} var standardSeperator string = "___FORGE___" func makeFmts() string { @@ -35,6 +35,31 @@ func makeFmts() string { return "--format=" + strings.Join(all, standardSeperator) } +func makeStat(line string) *Stat { + line = strings.TrimSpace(line) + parts := strings.Split(line, standardSeperator) + if len(parts) != 6 { + log.Printf("BAD LINE: len(%d) %s\n", len(parts), line) + return nil + } + newstat := new(Stat) + newstat.Hash = parts[0] + newstat.TreeHash = parts[1] + t, err := cobol.GetTime(parts[2]) + _ = err + if t != nil { + newstat.AuthorTime = timestamppb.New(*t) + } + t, err = cobol.GetTime(parts[3]) + if t != nil { + newstat.CommitTime = timestamppb.New(*t) + } + newstat.SanitizedSubject = parts[4] + newstat.Tags = parts[5] + + return newstat +} + // makes a new file. File must be empty at start func (r *Repo) MakeRemote(remoteName string) (*Stats, error) { stats, err := r.LoadRemote(remoteName) @@ -42,9 +67,10 @@ func (r *Repo) MakeRemote(remoteName string) (*Stats, error) { return stats, err } if stats.Len() != 0 { - return stats, errors.New("refs file was already created") + // file was already created and populated with data + return stats, nil } - cmd := []string{"git", "log", "-n", "100", makeFmts(), "origin/HEAD"} // HEAD is _NOT_ always set + cmd := []string{"git", "log", makeFmts(), "origin/HEAD"} // HEAD is _NOT_ always set if env.True("stats") { log.Info("STATS VERBOSE Run:", cmd) } @@ -54,31 +80,11 @@ func (r *Repo) MakeRemote(remoteName string) (*Stats, error) { } var counter int for _, line := range cmdout.Stdout { - line = strings.TrimSpace(line) - parts := strings.Split(line, standardSeperator) - if len(parts) != 5 { - log.Printf("Repo: %s len(%d)\n", r.FullPath, len(parts)) - log.Printf("CMD: %v\n", cmd) - log.Printf("LINE:%s\n", line) - return stats, errors.New(line) - } if env.True("stats") { - log.Printf("LINE:%v %d %s\n", parts, counter, r.FullPath) + log.Printf("LINE:%s %d %s\n", line, counter, r.FullPath) } counter += 1 - newstat := new(Stat) - newstat.Hash = parts[0] - newstat.TreeHash = parts[1] - t, err := cobol.GetTime(parts[2]) - _ = err - if t != nil { - newstat.AuthorTime = timestamppb.New(*t) - } - t, err = cobol.GetTime(parts[3]) - if t != nil { - newstat.CommitTime = timestamppb.New(*t) - } - newstat.SanitizedSubject = parts[4] + newstat := makeStat(line) stats.Append(newstat) } if counter > 0 { @@ -107,20 +113,12 @@ func (r *Repo) UpdateRemote(remoteName string) error { } var counter int for _, line := range cmdout.Stdout { - line = strings.TrimSpace(line) - parts := strings.Split(line, standardSeperator) - if len(parts) != 5 { - log.Printf("Repo: %s len(%d)\n", r.FullPath, len(parts)) - log.Printf("CMD: %v\n", cmd) - log.Printf("LINE:%s\n", line) - return errors.New(line) - } if env.True("stats") { - log.Printf("LINE:%v %d %s\n", parts, counter, r.FullPath) + log.Printf("LINE:%s %d %s\n", line, counter, r.FullPath) } counter += 1 - newstat := new(Stat) - newstat.Hash = parts[0] + newstat := makeStat(line) + // TODO: convert this protobuf to raw binary, then do a raw BinarySearch() on the hash n, found := slices.BinarySearchFunc(stats.Stats, newstat, func(a, b *Stat) int { return strings.Compare(a.Hash, b.Hash) }) @@ -130,18 +128,6 @@ func (r *Repo) UpdateRemote(remoteName string) error { // log.Info("found", n) continue } - - newstat.TreeHash = parts[1] - t, err := cobol.GetTime(parts[2]) - _ = err - if t != nil { - newstat.AuthorTime = timestamppb.New(*t) - } - t, err = cobol.GetTime(parts[3]) - if t != nil { - newstat.CommitTime = timestamppb.New(*t) - } - newstat.SanitizedSubject = parts[4] stats.Append(newstat) } if counter > 0 { |
