func report(reportedError error, stack string) { title, body, err := reportTitleAndBody(reportedError, stack) utils.Check(err) project := NewProject(hubProjectOwner, hubProjectName, GitHubHost) gh := NewClient(project.Host) issue, err := gh.CreateIssue(project, title, body, []string{"Crash Report"}) utils.Check(err) ui.Println(issue.HTMLURL) }
// Remove the scheme from host when the host url is absolute. func rawHost(host string) string { u, err := url.Parse(host) utils.Check(err) if u.IsAbs() { return u.Host } else { return u.Path } }
func (c *Config) scanLine() string { var line string scanner := bufio.NewScanner(os.Stdin) if scanner.Scan() { line = scanner.Text() } utils.Check(scanner.Err()) return line }
func New(cmd string) *Cmd { cmds, err := shellquote.Split(cmd) utils.Check(err) name := cmds[0] args := make([]string, 0) for _, arg := range cmds[1:] { args = append(args, arg) } return &Cmd{Name: name, Args: args} }
func init() { homeDir := os.Getenv("HOME") if homeDir == "" { if u, err := user.Current(); err == nil { homeDir = u.HomeDir } } if homeDir == "" { utils.Check(fmt.Errorf("Can't get current user's home dir")) } defaultConfigsFile = filepath.Join(homeDir, ".config", "hub") }
func (t *verboseTransport) dumpBody(body io.ReadCloser) io.ReadCloser { if body == nil { return nil } defer body.Close() buf := new(bytes.Buffer) _, err := io.Copy(buf, body) utils.Check(err) if buf.Len() > 0 { t.verbosePrintln(buf.String()) } return ioutil.NopCloser(buf) }
func (c *Config) selectHost() *Host { options := len(c.Hosts) if options == 1 { return &c.Hosts[0] } prompt := "Select host:\n" for idx, host := range c.Hosts { prompt += fmt.Sprintf(" %d. %s\n", idx+1, host.Host) } prompt += fmt.Sprint("> ") ui.Printf(prompt) index := c.scanLine() i, err := strconv.Atoi(index) if err != nil || i < 1 || i > options { utils.Check(fmt.Errorf("Error: must enter a number [1-%d]", options)) } return &c.Hosts[i-1] }