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