gitlab.com/zaquestion/lab@v0.14.0/cmd/issue_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 issueLabels []string 14 issueState string 15 issueNumRet int 16 issueAll bool 17 ) 18 19 var issueListCmd = &cobra.Command{ 20 Use: "list [remote]", 21 Aliases: []string{"ls"}, 22 Short: "List issues", 23 Long: ``, 24 Run: func(cmd *cobra.Command, args []string) { 25 rn, _, err := parseArgs(args) 26 if err != nil { 27 log.Fatal(err) 28 } 29 30 opts := gitlab.ListProjectIssuesOptions{ 31 ListOptions: gitlab.ListOptions{ 32 PerPage: issueNumRet, 33 }, 34 Labels: issueLabels, 35 State: &issueState, 36 OrderBy: gitlab.String("updated_at"), 37 } 38 num := issueNumRet 39 if issueAll { 40 num = -1 41 } 42 issues, err := lab.IssueList(rn, opts, num) 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 issueListCmd.Flags().IntVarP( 59 &issueNumRet, "number", "n", 10, 60 "Number of issues to return") 61 issueListCmd.Flags().BoolVarP(&issueAll, "all", "a", false, "List all issues on the project") 62 issueCmd.AddCommand(issueListCmd) 63 }