// SPDX-License-Identifier: Unlicense OR MIT package main import ( "fmt" "io/ioutil" "os" "os/exec" "path/filepath" ) func buildJS(bi *buildInfo) error { out := *destPath if out == "" { out = bi.name } if err := os.MkdirAll(out, 0700); err != nil { return err } cmd := exec.Command( "go", "build", "-ldflags="+bi.ldflags, "-o", filepath.Join(out, "main.wasm"), bi.pkg, ) cmd.Env = append( os.Environ(), "GOOS=js", "GOARCH=wasm", ) _, err := runCmd(cmd) if err != nil { return err } const indexhtml = ` ` if err := ioutil.WriteFile(filepath.Join(out, "index.html"), []byte(indexhtml), 0600); err != nil { return err } goroot, err := runCmd(exec.Command("go", "env", "GOROOT")) if err != nil { return err } wasmjs := filepath.Join(goroot, "misc", "wasm", "wasm_exec.js") if _, err := os.Stat(wasmjs); err != nil { return fmt.Errorf("failed to find $GOROOT/misc/wasm/wasm_exec.js driver: %v", err) } return copyFile(filepath.Join(out, "wasm_exec.js"), wasmjs) }