github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/mrList.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 mrLabels []string 13 var mrState string 14 15 // listCmd represents the list command 16 var listCmd = &cobra.Command{ 17 Use: "list [remote] [page]", 18 Aliases: []string{"ls"}, 19 Short: "List merge requests", 20 Long: ``, 21 Args: cobra.MaximumNArgs(1), 22 Run: func(cmd *cobra.Command, args []string) { 23 rn, page, err := parseArgs(args) 24 if err != nil { 25 log.Fatal(err) 26 } 27 28 mrs, err := lab.MRList(rn, &gitlab.ListProjectMergeRequestsOptions{ 29 ListOptions: gitlab.ListOptions{ 30 Page: int(page), 31 PerPage: 10, 32 }, 33 Labels: mrLabels, 34 State: &mrState, 35 OrderBy: gitlab.String("updated_at"), 36 }) 37 if err != nil { 38 log.Fatal(err) 39 } 40 for _, mr := range mrs { 41 fmt.Printf("#%d %s\n", mr.IID, mr.Title) 42 } 43 }, 44 } 45 46 func init() { 47 listCmd.Flags().StringSliceVarP( 48 &mrLabels, "label", "l", []string{}, "filter merge requests by label") 49 listCmd.Flags().StringVarP( 50 &mrState, "state", "s", "opened", 51 "filter merge requests by state (opened/closed/merged)") 52 mrCmd.AddCommand(listCmd) 53 }