func (a BugApplication) Roadmap(args ArgumentList) { bgs := bugs.GetAllBugs() sort.Sort(BugListByMilestone(bgs)) fmt.Printf("# Roadmap for %s\n", bugs.GetRootDir().GetShortName().ToTitle()) milestone := "" for i := len(bgs) - 1; i >= 0; i -= 1 { b := bgs[i] newMilestone := b.Milestone() if milestone != newMilestone { if newMilestone == "" { fmt.Printf("\n## No milestone set:\n") } else { fmt.Printf("\n## %s:\n", newMilestone) } } if args.HasArgument("--simple") == false { fmt.Printf("- %s\n", b.Title("status priority")) } else { fmt.Printf("- %s\n", b.Title("")) } milestone = newMilestone } }
func Roadmap(args ArgumentList) { var bgs []bugs.Bug if args.HasArgument("--filter") { tags := strings.Split(args.GetArgument("--filter", ""), ",") fmt.Printf("%s", tags) bgs = bugs.FindBugsByTag(tags) } else { bgs = bugs.GetAllBugs() } sort.Sort(BugListByMilestone(bgs)) fmt.Printf("# Roadmap for %s\n", bugs.GetRootDir().GetShortName().ToTitle()) milestone := "" for i := len(bgs) - 1; i >= 0; i -= 1 { b := bgs[i] newMilestone := b.Milestone() if milestone != newMilestone { if newMilestone == "" { fmt.Printf("\n## No milestone set:\n") } else { fmt.Printf("\n## %s:\n", newMilestone) } } if args.HasArgument("--simple") { fmt.Printf("- %s\n", b.Title("")) } else { options := "" if !args.HasArgument("--no-status") { options += "status" } if !args.HasArgument("--no-priority") { options += " priority" } if !args.HasArgument("--no-identifier") { options += " identifier" } if args.HasArgument("--tags") { options += "tags" } fmt.Printf("- %s\n", b.Title(options)) } milestone = newMilestone } }
func getAllTags() []string { bugs := bugs.GetAllBugs() // Put all the tags in a map, then iterate over // the keys so that only unique tags are included tagMap := make(map[string]int, 0) for _, bug := range bugs { for _, tag := range bug.Tags() { tagMap[string(tag)] += 1 } } keys := make([]string, 0, len(tagMap)) for k := range tagMap { keys = append(keys, k) } return keys }