Skip to content

Instantly share code, notes, and snippets.

@poy
Created September 10, 2019 16:18
Show Gist options
  • Save poy/4de9a5de639bd9e153cf163dfffe7ef4 to your computer and use it in GitHub Desktop.
Save poy/4de9a5de639bd9e153cf163dfffe7ef4 to your computer and use it in GitHub Desktop.
This will tell you how many points are in a milestone for github.com/google/kf
package main
import (
"context"
"flag"
"fmt"
"os"
"strconv"
"github.com/google/go-github/github"
)
func main() {
milestone := flag.String("milestone", "0.2", "The milestone to look for")
flag.Parse()
client := github.NewClient(nil)
milestoneNumber, err := fetchMilestoneNumber(client, *milestone)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
labels := map[string]int{
"points/1": 1,
"points/2": 2,
"points/3": 3,
"points/5": 5,
"points/8": 8,
"points/13": 13,
}
var points int
for label := range labels {
issues, _, err := client.Issues.ListByRepo(context.Background(), "google", "kf", &github.IssueListByRepoOptions{
Milestone: milestoneNumber,
Labels: []string{label},
})
if err != nil {
fmt.Fprintf(os.Stderr, "failed to read issues: %s\n", err)
os.Exit(1)
}
for _, issue := range issues {
for _, label := range issue.Labels {
if label.Name == nil {
continue
}
points += labels[*label.Name]
}
}
}
fmt.Println(points)
}
func fetchMilestoneNumber(client *github.Client, milestone string) (string, error) {
if milestone == "*" || milestone == "none" {
return milestone, nil
}
milestones, _, err := client.Issues.ListMilestones(context.Background(), "google", "kf", nil)
if err != nil {
return "", fmt.Errorf("failed to read milestones: %s", err)
}
milestoneNumber := -1
for _, m := range milestones {
if m.Number == nil || m.Title == nil || *m.Title != milestone {
continue
}
milestoneNumber = *m.Number
break
}
if milestoneNumber == -1 {
return "", fmt.Errorf("unable to find milestone %q", milestone)
}
return strconv.FormatInt(int64(milestoneNumber), 10), nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment