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 }