func login() { usr, err := user.Current() if err != nil { log.Fatal(err) } d := fmt.Sprintf("%s/.qcli", usr.HomeDir) u, err := url.Parse(*addr) if err != nil { log.Fatal(err) } p := filepath.Join(usr.HomeDir, ".qcli", u.Host) if exists(p) { d, err := ioutil.ReadFile(p) if err != nil { log.Fatal(err) } cli, err = quimby.NewClient(*addr, quimby.Token(string(d))) if err != nil { log.Fatal(err) } if err := cli.GetNodes(); err != nil { os.Remove(p) login() } } else { if !exists(d) { if os.Mkdir(d, 0700); err != nil { log.Fatal(err) } } fmt.Printf("password: "******"tfa: ") fmt.Scanf("%s\n", &tfa) cli, err = quimby.NewClient(*addr) if err != nil { log.Fatal(err) } token, err := cli.Login(username, string(pw), tfa) if err != nil { log.Fatal(err) } if err := ioutil.WriteFile(p, []byte(token), 0700); err != nil { log.Fatal(err) } if err := cli.GetNodes(); err != nil { log.Fatal(err) } } }
func main() { kingpin.Parse() cli, err = quimby.NewClient(*addr) if err != nil { log.Fatal(err) } login() }