github.com/matthewdale/lab@v0.14.0/cmd/project_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 projectListConfig struct { 13 All bool 14 Owned bool 15 Membership bool 16 Starred bool 17 18 Number int 19 } 20 21 var projectListCmd = &cobra.Command{ 22 Use: "list [search]", 23 Aliases: []string{"ls", "search"}, 24 Short: "List your projects", 25 Run: func(cmd *cobra.Command, args []string) { 26 search, _, err := parseArgsStr(args) 27 if err != nil { 28 log.Fatal(err) 29 } 30 opt := gitlab.ListProjectsOptions{ 31 ListOptions: gitlab.ListOptions{ 32 PerPage: projectListConfig.Number, 33 }, 34 Simple: gitlab.Bool(true), 35 OrderBy: gitlab.String("id"), 36 Sort: gitlab.String("asc"), 37 Owned: gitlab.Bool(projectListConfig.Owned), 38 Membership: gitlab.Bool(projectListConfig.Membership), 39 Starred: gitlab.Bool(projectListConfig.Starred), 40 Search: gitlab.String(search), 41 } 42 num := projectListConfig.Number 43 if projectListConfig.All { 44 num = -1 45 } 46 projects, err := lab.ProjectList(opt, num) 47 if err != nil { 48 log.Fatal(err) 49 } 50 for _, p := range projects { 51 fmt.Println(p.PathWithNamespace) 52 } 53 }, 54 } 55 56 func init() { 57 projectCmd.AddCommand(projectListCmd) 58 projectListCmd.Flags().BoolVarP(&projectListConfig.All, "all", "a", false, "List all projects on the instance") 59 projectListCmd.Flags().BoolVarP(&projectListConfig.Owned, "mine", "m", false, "limit by your projects") 60 projectListCmd.Flags().BoolVar(&projectListConfig.Membership, "member", false, "limit by projects which you are a member") 61 projectListCmd.Flags().BoolVar(&projectListConfig.Starred, "starred", false, "limit by your starred projects") 62 projectListCmd.Flags().IntVarP(&projectListConfig.Number, "number", "n", 100, "Number of projects to return") 63 }