main: embed assets from www to allows PWD to run standalone (#425)

Generate these assets in config because this package is imported by
most.

Add internal/addgenheader as a simple helper because go-bindata doesn't
output the write header.

Also update test CI workflow to regenerate and check commit is clean.
This commit is contained in:
Paul Jolly
2020-10-06 14:33:11 +01:00
committed by GitHub
parent db603ec953
commit 1e0eb1f329
9 changed files with 591 additions and 1 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
config/gen_bindata.go linguist-generated

View File

@@ -22,5 +22,9 @@ jobs:
uses: actions/setup-go@9fbc767707c286e568c92927bbf57d76b73e0892
with:
go-version: ${{ matrix.go_version }}
- name: Generate
run: go generate ./...
- name: Test
run: go test ./...
- name: Verify clean commit
run: test -z "$(git status --porcelain)" || (git status; git diff; false)

View File

@@ -10,6 +10,10 @@ import (
"golang.org/x/oauth2"
)
//go:generate go run github.com/jteeuwen/go-bindata/go-bindata -pkg config -o gen_bindata.go -prefix ../www/ ../www ../www/default ../www/assets ../www/assets/xterm ../www/assets/xterm/addons ../www/assets/xterm/addons/webLinks ../www/assets/xterm/addons/terminado ../www/assets/xterm/addons/fullscreen ../www/assets/xterm/addons/fit ../www/assets/xterm/addons/attach ../www/assets/xterm/addons/zmodem ../www/assets/xterm/addons/search ../www/k8s
//go:generate go run github.com/play-with-docker/play-with-docker/internal/addgenheader gen_bindata.go "Code generated by go-bindata."
//go:generate gofmt -w -s gen_bindata.go
const (
PWDHostnameRegex = "[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}"
PortRegex = "[0-9]{1,5}"

537
config/gen_bindata.go generated Normal file

File diff suppressed because one or more lines are too long

1
go.mod
View File

@@ -34,6 +34,7 @@ require (
github.com/hashicorp/golang-lru v0.5.1
github.com/inconshreveable/go-vhost v0.0.0-20160627193104-06d84117953b
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 // indirect
github.com/jteeuwen/go-bindata v3.0.7+incompatible
github.com/juju/ratelimit v1.0.1 // indirect
github.com/mailru/easyjson v0.0.0-20171120080333-32fa128f234d // indirect
github.com/miekg/dns v0.0.0-20171019064225-822ae18e7187

2
go.sum
View File

@@ -187,6 +187,8 @@ github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts=
github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY=

View File

@@ -9,6 +9,7 @@ import (
"io/ioutil"
"log"
"net/http"
"path"
"strings"
"time"
@@ -203,8 +204,15 @@ func initAssets(p *types.Playground) {
p.AssetsDir = "default"
}
lpath := path.Join(p.AssetsDir, "landing.html")
landing, err := config.Asset(lpath)
if err != nil {
log.Fatalf("Error loading %v: %v", lpath, err)
}
var b bytes.Buffer
t, err := template.New("landing.html").Delims("[[", "]]").ParseFiles(fmt.Sprintf("./www/%s/landing.html", p.AssetsDir))
t := template.New("landing.html").Delims("[[", "]]")
t, err = t.Parse(string(landing))
if err != nil {
log.Fatalf("Error parsing template %v", err)
}

View File

@@ -0,0 +1,26 @@
// addgenheader is a simple program that adds a DO NOT EDIT style
// comment at the top of a file. Because some generators do not do
// this, e.g. go-bindata
package main
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"strings"
)
func main() {
var buf bytes.Buffer
fmt.Fprintf(&buf, "// %v DO NOT EDIT\n", strings.TrimSpace(os.Args[2]))
fmt.Fprintf(&buf, "\n")
byts, err := ioutil.ReadFile(os.Args[1])
if err != nil {
panic(err)
}
fmt.Fprintf(&buf, "%s", byts)
if err := ioutil.WriteFile(os.Args[1], buf.Bytes(), 0666); err != nil {
panic(err)
}
}

7
tools.go Normal file
View File

@@ -0,0 +1,7 @@
// +build tools
package tools
import (
_ "github.com/jteeuwen/go-bindata"
)