From 98de5e4c17c97f5602cd0448519810f332686001 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 11 Dec 2021 17:25:19 +0100 Subject: [PATCH] refactor: Stats MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Remove unused parameters from functions • Decompose functions where possible Signed-off-by: Matej Focko --- src/cmd/stats.go | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/cmd/stats.go b/src/cmd/stats.go index 96e69ab..f49135d 100644 --- a/src/cmd/stats.go +++ b/src/cmd/stats.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "sort" "strings" "code.gitea.io/sdk/gitea" @@ -29,37 +30,53 @@ var ( }) core.ExitOnError("Couldn't list the pull requests", err) - GetStats(client, milestone, prs) + GetStats(prs) }, } ) -func GetStats(client *gitea.Client, milestone *gitea.Milestone, prs []*gitea.PullRequest) { - graded := 0 +func ParseHistogram(prs []*gitea.PullRequest) map[string]int { histogram := make(map[string]int) for _, pr := range prs { for _, label := range pr.Labels { if strings.HasPrefix(label.Name, "grade:") { grade := strings.Split(label.Name, ":")[1] - histogram[grade] += 1 - graded += 1 - break } } } - for grade, count := range histogram { + return histogram +} + +func SortedKeys(histogram map[string]int) []string { + grades := make([]string, 0, len(histogram)) + for grade := range histogram { + grades = append(grades, grade) + } + sort.Strings(grades) + return grades +} + +func GetStats(prs []*gitea.PullRequest) { + histogram := ParseHistogram(prs) + grades := SortedKeys(histogram) + + graded := 0 + for _, grade := range grades { + count := histogram[grade] if (count == 0) { continue } - fmt.Printf("%s: %d\n", grade, count) + graded += count + fmt.Printf(" %s: %2d\n", grade, count) } if (len(prs) - graded > 0) { - fmt.Printf("ungraded: %d\n", len(prs) - graded) + fmt.Println("--------") + fmt.Printf("TODO: %2d\n", len(prs) - graded) } } \ No newline at end of file