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  }