From 9c88b58d36e408cdb27acb63d20f947ce3522ce2 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sat, 23 Dec 2023 09:27:21 +1000 Subject: [PATCH] propagate verbose to playwright --- auth/browser/browser.go | 6 ++++++ auth/browser/client.go | 16 ++++++++++++---- cmd/slackdump/main.go | 13 +++++++------ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/auth/browser/browser.go b/auth/browser/browser.go index 2567f6d8..63edba95 100644 --- a/auth/browser/browser.go +++ b/auth/browser/browser.go @@ -39,6 +39,12 @@ func OptTimeout(d time.Duration) Option { } } +func OptVerbose(b bool) Option { + return func(c *Client) { + c.verbose = b + } +} + func (e *Browser) Set(v string) error { v = strings.ToLower(v) for i := 0; i < len(_Browser_index)-1; i++ { diff --git a/auth/browser/client.go b/auth/browser/client.go index d27a7ba0..0c74839b 100644 --- a/auth/browser/client.go +++ b/auth/browser/client.go @@ -27,6 +27,7 @@ type Client struct { pageClosed chan bool // will receive a notification that the page is closed prematurely. br Browser loginTimeout float64 // slack login page timeout in milliseconds. + verbose bool } var Logger logger.Interface = logger.Default @@ -48,19 +49,22 @@ func New(workspace string, opts ...Option) (*Client, error) { pageClosed: make(chan bool, 1), br: Bfirefox, loginTimeout: float64(DefLoginTimeout.Milliseconds()), + verbose: false, } for _, opt := range opts { opt(cl) } + l().Debugf("browser=%s, timeout=%f", cl.br, cl.loginTimeout) runopts := &playwright.RunOptions{ Browsers: []string{cl.br.String()}, + Verbose: cl.verbose, } if err := installFn(runopts); err != nil { if !strings.Contains(err.Error(), "could not run driver") || runtime.GOOS == "windows" { - return nil, err + return nil, fmt.Errorf("can't install the browser: %w", err) } if err := pwRepair(runopts); err != nil { - return nil, err + return nil, fmt.Errorf("failed to repair the browser installation: %w", err) } } return cl, nil @@ -235,23 +239,27 @@ func pwRepair(runopts *playwright.RunOptions) error { } // Reinstall cleans and reinstalls the browser. -func Reinstall(browser string) error { +func Reinstall(browser Browser, verbose bool) error { runopts := &playwright.RunOptions{ - Browsers: []string{browser}, + Browsers: []string{browser.String()}, + Verbose: verbose, } return reinstall(runopts) } func reinstall(runopts *playwright.RunOptions) error { + l().Debugf("reinstalling browser: %s", runopts.Browsers[0]) drv, err := newDriverFn(runopts) if err != nil { return err } + l().Debugf("removing %s", drv.DriverDirectory) if err := os.RemoveAll(drv.DriverDirectory); err != nil { return err } // attempt to reinstall + l().Debugf("reinstalling %s", drv.DriverDirectory) if err := installFn(runopts); err != nil { // we did everything we could, but it still failed. return err diff --git a/cmd/slackdump/main.go b/cmd/slackdump/main.go index f59414af..9f6a51bc 100644 --- a/cmd/slackdump/main.go +++ b/cmd/slackdump/main.go @@ -90,12 +90,6 @@ func main() { return } } - if params.browserReinstall { - dlog.Printf("Reinstalling %s", params.browser) - if err := browser.Reinstall(params.browser.String()); err != nil { - dlog.Fatalf("browser reinstall error: %s", err) - } - } if errors.Is(cfgErr, config.ErrNothingToDo) { // if the user hasn't provided any required flags, let's offer // an interactive prompt to fill them. @@ -141,6 +135,13 @@ func run(ctx context.Context, p params) error { ctx, task := trace.NewTask(ctx, "main.run") defer task.End() + if p.browserReinstall { + dlog.Printf("Reinstalling %s", p.browser) + if err := browser.Reinstall(p.browser, p.verbose); err != nil { + return fmt.Errorf("error reinstalling %s: %w", p.browser, err) + } + } + provider, err := app.InitProvider(ctx, p.appCfg.Options.CacheDir, p.workspace, p.creds, p.browser) if err != nil { return err