github.com/nkprince007/lab@v0.6.2-0.20171218071646-19d68b56f403/cmd/mrShow.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "log" 6 "strconv" 7 "strings" 8 9 "github.com/spf13/cobra" 10 "github.com/xanzy/go-gitlab" 11 "github.com/zaquestion/lab/internal/git" 12 lab "github.com/zaquestion/lab/internal/gitlab" 13 ) 14 15 var mrShowCmd = &cobra.Command{ 16 Use: "show [remote]", 17 Aliases: []string{"get"}, 18 ArgAliases: []string{"s"}, 19 Short: "Describe a merge request", 20 Long: ``, 21 Run: func(cmd *cobra.Command, args []string) { 22 remote, mrNum, 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 mr, err := lab.GetMR(rn, int(mrNum)) 35 if err != nil { 36 log.Fatal(err) 37 } 38 39 printMR(mr, rn) 40 }, 41 } 42 43 func printMR(mr *gitlab.MergeRequest, project string) { 44 assignee := "None" 45 milestone := "None" 46 labels := "None" 47 state := map[string]string{ 48 "opened": "Open", 49 "closed": "Closed", 50 "merged": "Merged", 51 }[mr.State] 52 if mr.Assignee.Username != "" { 53 assignee = mr.Assignee.Username 54 } 55 if mr.Milestone != nil { 56 milestone = mr.Milestone.Title 57 } 58 if len(mr.Labels) > 0 { 59 labels = strings.Join(mr.Labels, ", ") 60 } 61 62 fmt.Printf(` 63 #%d %s 64 =================================== 65 %s 66 ----------------------------------- 67 Project: %s 68 Branches: %s->%s 69 Status: %s 70 Work in Progress: %s 71 Assignee: %s 72 Author: %s 73 Milestone: %s 74 Labels: %s 75 WebURL: %s 76 `, 77 mr.IID, mr.Title, mr.Description, project, mr.SourceBranch, 78 mr.TargetBranch, state, strconv.FormatBool(mr.WorkInProgress), assignee, 79 mr.Author.Username, milestone, labels, mr.WebURL) 80 } 81 82 func init() { 83 mrCmd.AddCommand(mrShowCmd) 84 }