Cleanup png.Playwright.Init
This commit is contained in:
parent
e9d915f8a8
commit
c2d8d17f46
2 changed files with 42 additions and 46 deletions
|
|
@ -332,7 +332,11 @@ func (w *watcher) compileLoop(ctx context.Context) error {
|
||||||
if filepath.Ext(w.outputPath) == ".png" && !w.pw.Browser.IsConnected() {
|
if filepath.Ext(w.outputPath) == ".png" && !w.pw.Browser.IsConnected() {
|
||||||
newPW, err := w.pw.RestartBrowser()
|
newPW, err := w.pw.RestartBrowser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("png exporter has disconnected")
|
err = fmt.Errorf("png exporter has disconnected")
|
||||||
|
w.ms.Log.Error.Print(err)
|
||||||
|
w.broadcast(&compileResult{
|
||||||
|
Err: err.Error(),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
w.pw = newPW
|
w.pw = newPW
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package png
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
@ -25,23 +24,7 @@ func (pw *Playwright) RestartBrowser() (newPW Playwright, err error) {
|
||||||
if err = pw.Browser.Close(); err != nil {
|
if err = pw.Browser.Close(); err != nil {
|
||||||
return Playwright{}, err
|
return Playwright{}, err
|
||||||
}
|
}
|
||||||
browser, err := pw.PW.Chromium.Launch()
|
return startPlaywright(pw.PW)
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
context, err := browser.NewContext()
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
page, err := context.NewPage()
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
return Playwright{
|
|
||||||
PW: pw.PW,
|
|
||||||
Browser: browser,
|
|
||||||
Page: page,
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pw *Playwright) Cleanup() (err error) {
|
func (pw *Playwright) Cleanup() (err error) {
|
||||||
|
|
@ -54,33 +37,7 @@ func (pw *Playwright) Cleanup() (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitPlaywright() (Playwright, error) {
|
func startPlaywright(pw *playwright.Playwright) (Playwright, error) {
|
||||||
// check if playwright driver/browsers are installed and up to date
|
|
||||||
// https://github.com/playwright-community/playwright-go/blob/8e8f670b5fa7ba5365ae4bfc123fea4aac359763/run.go#L64.
|
|
||||||
driver, err := playwright.NewDriver(&playwright.RunOptions{})
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
if _, err := os.Stat(driver.DriverBinaryLocation); errors.Is(err, os.ErrNotExist) {
|
|
||||||
err = playwright.Install()
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
} else if err == nil {
|
|
||||||
cmd := exec.Command(driver.DriverBinaryLocation, "--version")
|
|
||||||
output, err := cmd.Output()
|
|
||||||
if err != nil || !bytes.Contains(output, []byte(driver.Version)) {
|
|
||||||
err = playwright.Install()
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pw, err := playwright.Run()
|
|
||||||
if err != nil {
|
|
||||||
return Playwright{}, err
|
|
||||||
}
|
|
||||||
browser, err := pw.Chromium.Launch()
|
browser, err := pw.Chromium.Launch()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Playwright{}, err
|
return Playwright{}, err
|
||||||
|
|
@ -100,6 +57,41 @@ func InitPlaywright() (Playwright, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func InitPlaywright() (Playwright, error) {
|
||||||
|
// check if playwright driver/browsers are installed and up to date
|
||||||
|
// https://github.com/playwright-community/playwright-go/blob/8e8f670b5fa7ba5365ae4bfc123fea4aac359763/run.go#L64.
|
||||||
|
driver, err := playwright.NewDriver(&playwright.RunOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return Playwright{}, err
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(driver.DriverBinaryLocation); os.IsNotExist(err) {
|
||||||
|
err = playwright.Install()
|
||||||
|
if err != nil {
|
||||||
|
return Playwright{}, err
|
||||||
|
}
|
||||||
|
} else if err == nil {
|
||||||
|
cmd := exec.Command(driver.DriverBinaryLocation, "--version")
|
||||||
|
output, err := cmd.Output()
|
||||||
|
if err != nil {
|
||||||
|
return Playwright{}, fmt.Errorf("could not install Playwright driver")
|
||||||
|
}
|
||||||
|
if !bytes.Contains(output, []byte(driver.Version)) {
|
||||||
|
err = playwright.Install()
|
||||||
|
if err != nil {
|
||||||
|
return Playwright{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Playwright{}, fmt.Errorf("could not install Playwright driver")
|
||||||
|
}
|
||||||
|
|
||||||
|
pw, err := playwright.Run()
|
||||||
|
if err != nil {
|
||||||
|
return Playwright{}, err
|
||||||
|
}
|
||||||
|
return startPlaywright(pw)
|
||||||
|
}
|
||||||
|
|
||||||
//go:embed generate_png.js
|
//go:embed generate_png.js
|
||||||
var genPNGScript string
|
var genPNGScript string
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue