aboutsummaryrefslogtreecommitdiff
path: root/data.go
diff options
context:
space:
mode:
Diffstat (limited to 'data.go')
-rw-r--r--data.go87
1 files changed, 85 insertions, 2 deletions
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 = "<unknown>", "<unknown>"
+ 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
+}