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  }