package main import ( "encoding/json" "fmt" "os" "time" "o5r.ca/autocrossbow/contributions" "o5r.ca/autocrossbow/issues/vikunja" "o5r.ca/autocrossbow/issues" ) func main() { // Define flags var jiraUser = os.Args[1] var proj = os.Args[2] var ghusername = os.Args[3] var start = os.Args[4] var end = os.Args[5] var employeename = os.Args[6] // Parse Jira user from flags // Note: We're keeping the original positional args for now, but will update to use flags properly // For now, we'll just use the first argument as jiraUser and proceed with the rest as before 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 }