From 1842b61935361fde41bc88f7672c20e1945079d6 Mon Sep 17 00:00:00 2001 From: Inkeliz Date: Mon, 7 Jun 2021 14:09:15 +0100 Subject: [PATCH] cmd/gogio: [wasm] add favicon and title support Signed-off-by: Inkeliz --- cmd/gogio/jsbuild.go | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/cmd/gogio/jsbuild.go b/cmd/gogio/jsbuild.go index 58bccc11..ba59a991 100644 --- a/cmd/gogio/jsbuild.go +++ b/cmd/gogio/jsbuild.go @@ -3,6 +3,7 @@ package main import ( + "bytes" "fmt" "io" "io/ioutil" @@ -10,6 +11,7 @@ import ( "os/exec" "path/filepath" "strings" + "text/template" "golang.org/x/tools/go/packages" ) @@ -39,9 +41,40 @@ func buildJS(bi *buildInfo) error { if err != nil { return err } - if err := ioutil.WriteFile(filepath.Join(out, "index.html"), []byte(jsIndex), 0600); err != nil { + + var faviconPath string + if _, err := os.Stat(bi.iconPath); err == nil { + // Copy icon to the output folder + icon, err := ioutil.ReadFile(bi.iconPath) + if err != nil { + return err + } + if err := ioutil.WriteFile(filepath.Join(out, filepath.Base(bi.iconPath)), icon, 0600); err != nil { + return err + } + faviconPath = filepath.Base(bi.iconPath) + } + + indexTemplate, err := template.New("").Parse(jsIndex) + if err != nil { return err } + + var b bytes.Buffer + if err := indexTemplate.Execute(&b, struct { + Name string + Icon string + }{ + Name: bi.name, + Icon: faviconPath, + }); err != nil { + return err + } + + if err := ioutil.WriteFile(filepath.Join(out, "index.html"), b.Bytes(), 0600); err != nil { + return err + } + goroot, err := runCmd(exec.Command("go", "env", "GOROOT")) if err != nil { return err @@ -125,6 +158,8 @@ const ( + {{ if .Icon }}{{ end }} + {{ if .Name }}{{.Name}}{{ end }}