Created
September 10, 2019 16:18
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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