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  }