package main
import (
"encoding/json"
"fmt"
"io"
"os"
"sort"
)
type issue struct {
Path string `json:"ImportPath"`
IssueCount int `json:"OpenIssues"`
}
type Issues []issue
func (a Issues) Len() int { return len(a) }
func (a Issues) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a Issues) Less(i, j int) bool {
if a[i].IssueCount < a[j].IssueCount {
return false
}
if a[i].IssueCount > a[j].IssueCount {
return true
}
return a[i].IssueCount < a[j].IssueCount
}
func readissues(r io.Reader, w io.Writer, n int) {
var data Issues
if err := json.NewDecoder(r).Decode(&data); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return
}
sort.Sort(Issues(data))
fmt.Fprintf(w, "# Top %d Go Issues\n", n)
for i, d := range data {
if i <= n-1 && d.IssueCount > 0 {
fmt.Fprintf(w, "%s\t%d\n", d.Path, d.IssueCount)
}
}
}
func main() {
readissues(os.Stdin, os.Stdout, 20)