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  }