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  }