github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/snippetList.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 // snippetListCmd represents the snippetList command 14 var snippetListCmd = &cobra.Command{ 15 Use: "list [remote] [page]", 16 Short: "List personal or project snippets", 17 Long: ``, 18 Run: func(cmd *cobra.Command, args []string) { 19 remote, page, err := parseArgsRemote(args) 20 if err != nil { 21 log.Fatal(err) 22 } 23 if remote == "" { 24 remote = forkedFromRemote 25 } 26 listOpts := gitlab.ListOptions{ 27 Page: int(page), 28 PerPage: 10, 29 } 30 31 // See if we're in a git repo or if global is set to determine 32 // if this should be a personal snippet 33 rn, _ := git.PathWithNameSpace(remote) 34 if global || rn == "" { 35 opts := gitlab.ListSnippetsOptions{ 36 ListOptions: listOpts, 37 } 38 snips, err := lab.SnippetList(&opts) 39 if err != nil { 40 log.Fatal(err) 41 } 42 for _, snip := range snips { 43 fmt.Printf("#%d %s\n", snip.ID, snip.Title) 44 } 45 return 46 } 47 48 project, err := lab.FindProject(rn) 49 if err != nil { 50 log.Fatal(err) 51 } 52 opts := gitlab.ListProjectSnippetsOptions{ 53 ListOptions: listOpts, 54 } 55 snips, err := lab.ProjectSnippetList(project.ID, &opts) 56 if err != nil { 57 log.Fatal(err) 58 } 59 for _, snip := range snips { 60 fmt.Printf("#%d %s\n", snip.ID, snip.Title) 61 } 62 }, 63 } 64 65 func init() { 66 snippetCmd.AddCommand(snippetListCmd) 67 }