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