Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions client/go/internal/cli/cmd/login.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"fmt"
"log"
"os"
"os/exec"
"runtime"
"time"

"github.com/pkg/browser"
Expand Down Expand Up @@ -62,19 +64,18 @@ func doLogin(cli *CLI, cmd *cobra.Command, useFileStorage bool) error {

log.Printf("Your Device Confirmation code is: %s\n", state.UserCode)

autoOpen, err := cli.confirm("Automatically open confirmation page in your default browser?", true)
if err != nil {
return err
autoOpen := isBrowserOpenPossible()
if autoOpen {
autoOpen, _ = cli.confirm("Automatically open confirmation page in your default browser?", true)
}

if autoOpen {
log.Printf("Opened link in your browser: %s\n", state.VerificationURI)
log.Printf("Opened link in your browser:\n\t %s\n", state.VerificationURI)
err = browser.OpenURL(state.VerificationURI)
if err != nil {
log.Println("Couldn't open the URL, please do it manually")
}
} else {
log.Printf("Please open link in your browser: %s\n", state.VerificationURI)
log.Printf("Please open link in your browser:\n\t %s\n", state.VerificationURI)
}

var res auth.Result
Expand Down Expand Up @@ -116,3 +117,21 @@ func doLogin(cli *CLI, cmd *cobra.Command, useFileStorage bool) error {
cli.printSuccess("Logged in")
return nil
}

func isBrowserOpenPossible() bool {
if runtime.GOOS == "windows" {
return true
}
providers := []string{
"open",
"xdg-open",
"x-www-browser",
"www-browser",
}
for _, provider := range providers {
if _, err := exec.LookPath(provider); err == nil {
return true
}
}
return false
}
Loading