...
1
2
3
4 package main
5
6 import (
7 "fmt"
8 "io/ioutil"
9 "log"
10 "regexp"
11
12 "github.com/playwright-community/playwright-go"
13 )
14
15 func main() {
16 const readmePath = "README.md"
17 readmeContent, err := ioutil.ReadFile(readmePath)
18 if err != nil {
19 log.Fatalf("could not read readme: %v", err)
20 }
21 replaceValueInTemplate := func(name, value string) {
22 re := regexp.MustCompile(fmt.Sprintf("<!-- GEN:%s -->([^<]+)<!-- GEN:stop -->", name))
23 readmeContent = re.ReplaceAll(readmeContent, []byte(fmt.Sprintf("<!-- GEN:%s -->%s<!-- GEN:stop -->", name, value)))
24 }
25
26 pw, err := playwright.Run()
27 if err != nil {
28 log.Fatalf("could not run playwright: %v", err)
29 }
30 browserTypes := []playwright.BrowserType{pw.Chromium, pw.Firefox, pw.WebKit}
31 for _, browserType := range browserTypes {
32 browser, err := browserType.Launch()
33 if err != nil {
34 log.Fatalf("could not launch browser: %v", err)
35 }
36 replaceValueInTemplate(fmt.Sprintf("%s-version", browserType.Name()), browser.Version())
37
38 var badgeFormat string
39 switch browserType.Name() {
40 case "chromium":
41 badgeFormat = "[](https://www.chromium.org/Home)"
42 case "firefox":
43 badgeFormat = "[](https://www.mozilla.org/en-US/firefox/new/)"
44 case "webkit":
45 badgeFormat = "[](https://webkit.org/)"
46 }
47 replaceValueInTemplate(browserType.Name()+"-version-badge", fmt.Sprintf(badgeFormat, browser.Version()))
48
49 if err := browser.Close(); err != nil {
50 log.Fatalf("could not close browser: %v", err)
51 }
52 }
53 if err := ioutil.WriteFile(readmePath, readmeContent, 0644); err != nil {
54 log.Fatalf("could not write readme: %v", err)
55 }
56 if err := pw.Stop(); err != nil {
57 log.Fatalf("could not stop Playwright: %v", err)
58 }
59 }
60
View as plain text