func (c *Config) PromptForUser(host string) (user string) { user = os.Getenv("GITHUB_USER") if user != "" { return } ui.Printf("%s username: ", host) user = c.scanLine() return }
func (c *Config) PromptForPassword(host, user string) (pass string) { pass = os.Getenv("GITHUB_PASSWORD") if pass != "" { return } ui.Printf("%s password for %s (never stored): ", host, user) if isTerminal(os.Stdout.Fd()) { pass = string(gopass.GetPasswd()) } else { pass = c.scanLine() } return }
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] }
func printError(err error, stack string) { ui.Printf("%v\n\n", err) ui.Println(stack) }