github.com/matthewdale/lab@v0.14.0/cmd/issue_browse.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 "github.com/zaquestion/lab/internal/browser" 12 ) 13 14 var browse = browser.Open 15 16 var issueBrowseCmd = &cobra.Command{ 17 Use: "browse [remote] <id>", 18 Aliases: []string{"b"}, 19 Short: "View issue in a browser", 20 Long: ``, 21 Run: func(cmd *cobra.Command, args []string) { 22 rn, num, err := parseArgs(args) 23 if err != nil { 24 log.Fatal(err) 25 } 26 27 c := viper.AllSettings()["core"] 28 config := c.([]map[string]interface{})[0] 29 host := config["host"].(string) 30 31 hostURL, err := url.Parse(host) 32 if err != nil { 33 log.Fatal(err) 34 } 35 hostURL.Path = path.Join(hostURL.Path, rn, "issues") 36 if num > 0 { 37 hostURL.Path = path.Join(hostURL.Path, strconv.FormatInt(num, 10)) 38 } 39 40 err = browse(hostURL.String()) 41 if err != nil { 42 log.Fatal(err) 43 } 44 }, 45 } 46 47 func init() { 48 issueCmd.AddCommand(issueBrowseCmd) 49 }