github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/mrBrowse.go (about) 1 package cmd 2 3 import ( 4 "log" 5 "net/url" 6 "path" 7 "strconv" 8 9 "github.com/spf13/cobra" 10 "github.com/spf13/viper" 11 ) 12 13 var mrBrowseCmd = &cobra.Command{ 14 Use: "browse [remote] <id>", 15 Aliases: []string{"b"}, 16 Short: "View merge request in a browser", 17 Long: ``, 18 Run: func(cmd *cobra.Command, args []string) { 19 rn, num, err := parseArgs(args) 20 if err != nil { 21 log.Fatal(err) 22 } 23 24 c := viper.AllSettings()["core"] 25 config := c.([]map[string]interface{})[0] 26 host := config["host"].(string) 27 28 hostURL, err := url.Parse(host) 29 if err != nil { 30 log.Fatal(err) 31 } 32 hostURL.Path = path.Join(hostURL.Path, rn, "merge_requests") 33 if num > 0 { 34 hostURL.Path = path.Join(hostURL.Path, strconv.FormatInt(num, 10)) 35 } 36 37 err = browse(hostURL.String()) 38 if err != nil { 39 log.Fatal(err) 40 } 41 }, 42 } 43 44 func init() { 45 mrCmd.AddCommand(mrBrowseCmd) 46 }