github.com/matthewdale/lab@v0.14.0/cmd/mr_list.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/spf13/cobra" 8 "github.com/xanzy/go-gitlab" 9 lab "github.com/zaquestion/lab/internal/gitlab" 10 ) 11 12 var ( 13 mrLabels []string 14 mrState string 15 mrTargetBranch string 16 mrNumRet int 17 mrAll bool 18 ) 19 20 // listCmd represents the list command 21 var listCmd = &cobra.Command{ 22 Use: "list [remote]", 23 Aliases: []string{"ls"}, 24 Short: "List merge requests", 25 Long: ``, 26 Args: cobra.MaximumNArgs(1), 27 Run: func(cmd *cobra.Command, args []string) { 28 rn, _, err := parseArgs(args) 29 if err != nil { 30 log.Fatal(err) 31 } 32 33 num := mrNumRet 34 if mrAll { 35 num = -1 36 } 37 mrs, err := lab.MRList(rn, gitlab.ListProjectMergeRequestsOptions{ 38 ListOptions: gitlab.ListOptions{ 39 PerPage: mrNumRet, 40 }, 41 Labels: mrLabels, 42 State: &mrState, 43 TargetBranch: &mrTargetBranch, 44 OrderBy: gitlab.String("updated_at"), 45 }, num) 46 if err != nil { 47 log.Fatal(err) 48 } 49 for _, mr := range mrs { 50 fmt.Printf("#%d %s\n", mr.IID, mr.Title) 51 } 52 }, 53 } 54 55 func init() { 56 listCmd.Flags().StringSliceVarP( 57 &mrLabels, "label", "l", []string{}, "filter merge requests by label") 58 listCmd.Flags().StringVarP( 59 &mrState, "state", "s", "opened", 60 "filter merge requests by state (opened/closed/merged)") 61 listCmd.Flags().IntVarP( 62 &mrNumRet, "number", "n", 10, 63 "number of merge requests to return") 64 listCmd.Flags().StringVarP( 65 &mrTargetBranch, "target-branch", "t", "", 66 "filter merge requests by target branch") 67 listCmd.Flags().BoolVarP(&mrAll, "all", "a", false, "List all MRs on the project") 68 mrCmd.AddCommand(listCmd) 69 }