github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/issueList.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  	issueLabels []string
    14  	issueState  string
    15  )
    16  
    17  var issueListCmd = &cobra.Command{
    18  	Use:     "list [remote] [page]",
    19  	Aliases: []string{"ls"},
    20  	Short:   "List issues",
    21  	Long:    ``,
    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  		issues, err := lab.IssueList(rn, &gitlab.ListProjectIssuesOptions{
    29  			ListOptions: gitlab.ListOptions{
    30  				Page:    int(page),
    31  				PerPage: 10,
    32  			},
    33  			Labels:  issueLabels,
    34  			State:   &issueState,
    35  			OrderBy: gitlab.String("updated_at"),
    36  		})
    37  		if err != nil {
    38  			log.Fatal(err)
    39  		}
    40  		for _, issue := range issues {
    41  			fmt.Printf("#%d %s\n", issue.IID, issue.Title)
    42  		}
    43  	},
    44  }
    45  
    46  func init() {
    47  	issueListCmd.Flags().StringSliceVarP(
    48  		&issueLabels, "label", "l", []string{}, "filter issues by label")
    49  	issueListCmd.Flags().StringVarP(
    50  		&issueState, "state", "s", "opened",
    51  		"filter issues by state (opened/closed)")
    52  	issueCmd.AddCommand(issueListCmd)
    53  }