package main import ( "encoding/json" "fmt" "os" "time" "o5r.ca/autocrossbow/contributions" "o5r.ca/autocrossbow/issues/vikunja" "o5r.ca/autocrossbow/issues" ) func main() { proj := os.Args[1] ghusername := os.Args[2] start := os.Args[3] end := os.Args[4] employeename := os.Args[5] // Parse Jira user from flags jiraUser := "" for i, arg := range os.Args { if arg == "-jira-user" && i+1 < len(os.Args) { jiraUser = os.Args[i+1] break } } if jiraUser == "" { fmt.Println("Error: -jira-user flag is required") os.Exit(1) } prs := DoPrs(proj, ghusername, start, end) issues := DoJira(start, end, jiraUser) vikunjaTasks := DoVikunja(start, end) summ, err := SummarizeData(employeename, prs, issues, vikunjaTasks) if err != nil { fmt.Println(fmt.Errorf("error getting PRs: %w", err)) os.Exit(1) } fmt.Println(summ) } func DoPrs(proj, ghusername, start, end string) map[string][]contributions.PullRequest { prs, err := contributions.GetPRs(proj, ghusername, start, end) if err != nil { fmt.Println(fmt.Errorf("error getting PRs: %w", err)) os.Exit(1) } ghf, err := os.Create(fmt.Sprintf("gh-%s-%s-%s-%s-%d.json", proj, ghusername, start, end, time.Now().Unix())) if err != nil { fmt.Println(fmt.Errorf("error creating PR file: %w", err)) os.Exit(1) } enc := json.NewEncoder(ghf) err = enc.Encode(prs) if err != nil { fmt.Println(fmt.Errorf("error writing out PRs: %w", err)) os.Exit(1) } return prs } func DoJira(start, end, jiraUser string) []issues.Issue { host := os.Getenv("JIRA_HOST") issues, err := issues.GetIssues(host, jiraUser, start, end) if err != nil { fmt.Println(fmt.Errorf("error getting PRs: %w", err)) os.Exit(1) } jf, err := os.Create(fmt.Sprintf("jira-%s-%s-%s-%s-%d.json", host, jiraUser, start, end, time.Now().Unix())) if err != nil { fmt.Println(fmt.Errorf("error creating JIRA file: %w", err)) os.Exit(1) } defer jf.Close() enc := json.NewEncoder(jf) err = enc.Encode(issues) if err != nil { fmt.Println(fmt.Errorf("error writing out JIRA issues: %w", err)) os.Exit(1) } return issues } func DoVikunja(start, end string) []vikunja.Task { host := os.Getenv("VIKUNJA_HOST") user := os.Getenv("VIKUNJA_USER") tasks, err := vikunja.GetTasks(host, user, start, end) if err != nil { fmt.Println(fmt.Errorf("error getting Vikunja tasks: %w", err)) os.Exit(1) } vf, err := os.Create(fmt.Sprintf("vikunja-%s-%s-%s-%s-%d.json", host, user, start, end, time.Now().Unix())) if err != nil { fmt.Println(fmt.Errorf("error creating Vikunja file: %w", err)) os.Exit(1) } defer vf.Close() enc := json.NewEncoder(vf) err = enc.Encode(tasks) if err != nil { fmt.Println(fmt.Errorf("error writing out Vikunja tasks: %w", err)) os.Exit(1) } return tasks }