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 }