package main import ( "github.com/pkg/browser" log "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) func setDebugLogging(cCtx *cli.Context) { if cCtx.Bool("debug") { log.SetLevel(log.DebugLevel) log.Debug("Debug logging enabled") } else { log.SetLevel(log.InfoLevel) } } func Configure(cCtx *cli.Context) error { setDebugLogging(cCtx) instanceUrl := ReadLine("Instance URL:") config := Config{InstanceUrl: instanceUrl} return SaveConfigFromContext(cCtx, config) } func Login(cCtx *cli.Context) error { setDebugLogging(cCtx) config, err := LoadConfigFromContext(cCtx) if err != nil { return err } scopes := cCtx.String("scopes") clientApp := cCtx.Bool("client-app") clientName := cCtx.String("client-name") log.Info("Creating OAuth app") oauthApp, err := CreateOAuthApp(config.InstanceUrl, clientName, scopes) if err != nil { return err } config.OAuthApp = oauthApp if !clientApp { err = SaveConfigFromContext(cCtx, config) if err != nil { return err } } log.Info("OAuth app created") log.Info("Opening browser") authUrl, err := AuthorizeUrl(config.InstanceUrl, config.OAuthApp, cCtx.String("scopes")) if err != nil { return err } log.Info("Auth URL: ", authUrl) err = browser.OpenURL(authUrl) if err != nil { log.Infof("Could not open browser, please open the following URL in your browser: %s", authUrl) } authCode := ReadLine("Auth code:") oauthToken, err := RequestToken(config.InstanceUrl, config.OAuthApp, scopes, authCode) if err != nil { return err } config.OAuthToken = oauthToken if !clientApp { err = SaveConfigFromContext(cCtx, config) if err != nil { return err } } if clientApp { log.Info("Client app token:") log.Infof("%s %s", oauthToken.TokenType, oauthToken.AccessToken) } return nil }