func ConfigList(c *cli.Context, log logging.Logger, _ string) (int, error) { konfigs := configstore.List() if c.Bool("json") { p, err := json.MarshalIndent(konfigs, "", "\t") if err != nil { return 1, err } fmt.Printf("%s\n", p) return 0, nil } printKonfigs(konfigs.Slice()) return 0, nil }
func ConfigUse(c *cli.Context, log logging.Logger, _ string) (int, error) { if len(c.Args()) != 1 { cli.ShowCommandHelp(c, "use") return 1, nil } arg := c.Args().Get(0) k, ok := configstore.List()[arg] if !ok { fmt.Fprintf(os.Stderr, "Configuration %q was not found. Please use \"kd config list"+ "\" to list available configurations.\n", arg) return 1, nil } if err := configstore.Use(k); err != nil { fmt.Fprintln(os.Stderr, "Error switching configuration:", err) return 1, err } fmt.Printf("Switched to %s.\n\nPlease run \"sudo kd restart\" for the new configuration to take effect.\n", k.KodingPublic()) return 0, nil }
func AuthLogin(c *cli.Context, log logging.Logger, _ string) (int, error) { kodingURL, err := url.Parse(c.String("baseurl")) if err != nil { return 1, fmt.Errorf("%q is not a valid URL value: %s\n", c.String("koding"), err) } k, ok := configstore.List()[config.ID(kodingURL.String())] if !ok { k = &config.Konfig{ Endpoints: &config.Endpoints{ Koding: config.NewEndpointURL(kodingURL), }, } } if err := configstore.Use(k); err != nil { return 1, err } // We create here a kloud client instead of using kloud.DefaultClient // in order to handle first-time login attempts where configuration // for kloud does not yet exist. kloudClient := &kloud.Client{ Transport: &kloud.KiteTransport{ Konfig: k, Log: log, }, } testKloudHook(kloudClient) authClient := &auth.Client{ Kloud: kloudClient, } teamClient := &team.Client{ Kloud: kloudClient, } // If we already own a valid kite.key, it means we were already // authenticated and we just call kloud using kite.key authentication. err = kloudClient.Transport.(stack.Validator).Valid() log.Debug("auth: transport test: %s", err) opts := &auth.LoginOptions{ Team: c.String("team"), } if err != nil { opts.Username, err = helper.Ask("Username [%s]: ", config.CurrentUser.Username) if err != nil { return 1, err } if opts.Username == "" { opts.Username = config.CurrentUser.Username } for { opts.Password, err = helper.AskSecret("Password [***]: ") if err != nil { return 1, err } if opts.Password != "" { break } } } fmt.Fprintln(os.Stderr, "Logging to", kodingURL, "...") resp, err := authClient.Login(opts) if err != nil { return 1, fmt.Errorf("error logging into your Koding account: %v", err) } if resp.KiteKey != "" { k.KiteKey = resp.KiteKey k.Endpoints = resp.Metadata.Endpoints if err := configstore.Use(k); err != nil { return 1, err } } teamClient.Use(&team.Team{Name: resp.GroupName}) if c.Bool("json") { enc := json.NewEncoder(os.Stdout) enc.SetIndent("", "\t") enc.Encode(resp) } else { fmt.Fprintln(os.Stdout, "Successfully logged in to the following team:", resp.GroupName) } return 0, nil }