mirror of
https://github.com/int128/kubelogin.git
synced 2026-05-05 23:46:38 +00:00
43 lines
958 B
Go
43 lines
958 B
Go
package browser
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"os/exec"
|
|
|
|
"github.com/google/wire"
|
|
"github.com/pkg/browser"
|
|
)
|
|
|
|
func init() {
|
|
// In credential plugin mode, some browser launcher writes a message to stdout
|
|
// and it may break the credential json for client-go.
|
|
// This prevents the browser launcher from breaking the credential json.
|
|
browser.Stdout = os.Stderr
|
|
}
|
|
|
|
var Set = wire.NewSet(
|
|
wire.Struct(new(Browser)),
|
|
wire.Bind(new(Interface), new(*Browser)),
|
|
)
|
|
|
|
type Interface interface {
|
|
Open(url string) error
|
|
OpenCommand(ctx context.Context, url, command string) error
|
|
}
|
|
|
|
type Browser struct{}
|
|
|
|
// Open opens the default browser.
|
|
func (*Browser) Open(url string) error {
|
|
return browser.OpenURL(url)
|
|
}
|
|
|
|
// OpenCommand opens the browser using the command.
|
|
func (*Browser) OpenCommand(ctx context.Context, url, command string) error {
|
|
c := exec.CommandContext(ctx, command, url)
|
|
c.Stdout = os.Stderr // see above
|
|
c.Stderr = os.Stderr
|
|
return c.Run()
|
|
}
|