From 3fb0453a86f0f2f6f68d26b6fe38942c765dbbc7 Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Wed, 27 Dec 2023 13:53:36 +0100 Subject: seperate features from issues --- data.go | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 2 deletions(-) (limited to 'data.go') diff --git a/data.go b/data.go index 4f92795..8ee87a7 100644 --- a/data.go +++ b/data.go @@ -28,6 +28,8 @@ import ( "io" "log" "net/http" + "runtime/debug" + "sort" "strings" "sync" "time" @@ -44,6 +46,7 @@ type Data struct { ctx context.Context Issues Issues + Features Issues Projects Projects Timestamp time.Time Freq time.Duration @@ -128,14 +131,20 @@ func (d *Data) update() { // Filter issues with old target versions out var issues = Issues{} + var features = Issues{} for _, issue := range iss.Issues { if issue.Resolution.Name == "open" && strings.Compare(d.minimumVersion, issue.TargetVersion.Name) < 0 { - issues = append(issues, issue) + if issue.Severity.Name == "feature" { + features = append(features, issue) + } else { + issues = append(issues, issue) + } } } d.Issues = issues - fmt.Println("got", len(issues), "issues") + d.Features = features + fmt.Println("got", len(iss.Issues), "entries: ", len(features), "features and ", len(issues), "issues") } func (d *Data) Loop() { @@ -175,3 +184,77 @@ func (d *Data) printTemplate(w io.Writer, name string) { log.Println(e) } } + +func (d *Data) TargetVersions() (tv []string) { + d.mux.RLock() + defer d.mux.RUnlock() + + var m = map[string]bool{} + for _, s := range d.Issues.TargetVersions() { + m[s] = true + } + for _, s := range d.Features.TargetVersions() { + m[s] = true + } + for s := range m { + tv = append(tv, s) + } + sort.Strings(tv) + return +} + +func (d *Data) Categories() (cs []string) { + d.mux.RLock() + defer d.mux.RUnlock() + + var m = map[string]bool{} + for _, s := range d.Issues.Categories() { + m[s] = true + } + for _, s := range d.Features.Categories() { + m[s] = true + } + for s := range m { + cs = append(cs, s) + } + sort.Strings(cs) + return +} + +func (d *Data) Tags() (ts []string) { + d.mux.RLock() + defer d.mux.RUnlock() + + var m = map[string]bool{} + for _, s := range d.Issues.Tags() { + m[s] = true + } + for _, s := range d.Features.Tags() { + m[s] = true + } + for s := range m { + ts = append(ts, s) + } + sort.Strings(ts) + return +} + +func (d *Data) Commit() string { + var version, timestamp = "", "" + if info, ok := debug.ReadBuildInfo(); ok { + for _, setting := range info.Settings { + switch setting.Key { + case "vcs.revision": + n := len(setting.Value) + if n > 8 { + n = 8 + } + version = setting.Value[:n] + case "vcs.time": + timestamp = setting.Value + } + } + } + + return version + " from " + timestamp +} -- cgit v1.2.3