From 71b81eb30ee4220a6fb0f3020a31ab1393e0ec69 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Sat, 17 Oct 2015 18:09:54 -0700 Subject: [PATCH 1/4] Make index.md generated from canonical GopherJS README. This way, having the website up to date becomes somewhat easier, until we have enough resources to manually maintain it with separate (curated) content. --- doc.go | 6 ++++++ generate.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ index.md | 4 ++++ 3 files changed, 58 insertions(+) create mode 100644 doc.go create mode 100644 generate.go diff --git a/doc.go b/doc.go new file mode 100644 index 00000000..2d687440 --- /dev/null +++ b/doc.go @@ -0,0 +1,6 @@ +// Package gopherjswebsite is the www.gopherjs.org website source. +// +// It should be updated with `go generate github.com/gopherjs/gopherjs.github.io/...`. +package gopherjswebsite + +//go:generate go run generate.go diff --git a/generate.go b/generate.go new file mode 100644 index 00000000..44a889ba --- /dev/null +++ b/generate.go @@ -0,0 +1,48 @@ +// +build generate + +package main + +import ( + "bytes" + "io" + "io/ioutil" + "log" + "net/http" +) + +func gen() error { + resp, err := http.Get("https://raw.githubusercontent.com/gopherjs/gopherjs/master/README.md") + if err != nil { + return err + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + var buf bytes.Buffer + io.WriteString(&buf, `--- +# generated by generate.go; DO NOT EDIT +layout: index +title: Home +permalink: / +--- + +`) + _, err = buf.Write(body) + if err != nil { + return err + } + + ioutil.WriteFile("index.md", buf.Bytes(), 0644) + + return nil +} + +func main() { + err := gen() + if err != nil { + log.Fatalln(err) + } +} diff --git a/index.md b/index.md index 93ead15e..5a43fb64 100644 --- a/index.md +++ b/index.md @@ -1,4 +1,5 @@ --- +# generated by generate.go; DO NOT EDIT layout: index title: Home permalink: / @@ -7,6 +8,8 @@ permalink: / GopherJS - A compiler from Go to JavaScript ------------------------------------------- +[![Circle CI](https://circleci.com/gh/gopherjs/gopherjs.svg?style=svg)](https://circleci.com/gh/gopherjs/gopherjs) + GopherJS compiles Go code ([golang.org](http://golang.org/)) to pure JavaScript code. Its main purpose is to give you the opportunity to write front-end code in Go which will still run in all browsers. Give GopherJS a try on the [GopherJS Playground](http://gopherjs.github.io/playground/). ### What is supported? @@ -31,6 +34,7 @@ Now you can use `gopherjs build [files]` or `gopherjs install [package]` which - Use `float64` instead of `float32`. ### Community +- [#gopherjs Channel on Gophers Slack](https://gophers.slack.com/messages/gopherjs/) (invites to Gophers Slack are available [here](http://blog.gopheracademy.com/gophers-slack-community/#how-can-i-be-invited-to-join:2facdc921b2310f18cb851c36fa92369)) - [Google Group](https://groups.google.com/d/forum/gopherjs) - [Bindings to JavaScript APIs and libraries](https://github.com/gopherjs/gopherjs/wiki/bindings) - [GopherJS on Twitter](https://twitter.com/GopherJS) From be56600c05afbc9cd231fd9ed2f5f6ec3276dd9c Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Sat, 17 Oct 2015 18:18:42 -0700 Subject: [PATCH 2/4] Refactor generate.go to make it easier to generate more files if needed. Also use text/template to generate the output. It scales better than calls to io.WriteString, etc. --- generate.go | 55 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/generate.go b/generate.go index 44a889ba..d6e7b509 100644 --- a/generate.go +++ b/generate.go @@ -4,38 +4,59 @@ package main import ( "bytes" - "io" + "fmt" "io/ioutil" "log" "net/http" + "text/template" ) -func gen() error { - resp, err := http.Get("https://raw.githubusercontent.com/gopherjs/gopherjs/master/README.md") - if err != nil { - return err - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } +func t(text string) *template.Template { + return template.Must(template.New("").Parse(text)) +} - var buf bytes.Buffer - io.WriteString(&buf, `--- +// Filename -> Template. +var templates = map[string]*template.Template{ + + "index.md": t(`--- # generated by generate.go; DO NOT EDIT layout: index title: Home permalink: / --- -`) - _, err = buf.Write(body) +{{.HTTPGet "https://raw.githubusercontent.com/gopherjs/gopherjs/master/README.md"}}`), +} + +type data struct{} + +// HTTPGet fetches the contents at the given url. +func (data) HTTPGet(url string) (string, error) { + resp, err := http.Get(url) if err != nil { - return err + return "", err } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + return string(body), nil +} - ioutil.WriteFile("index.md", buf.Bytes(), 0644) +func gen() error { + for filename, t := range templates { + var buf bytes.Buffer + err := t.Execute(&buf, data{}) + if err != nil { + return err + } + fmt.Println("writing", filename) + err = ioutil.WriteFile(filename, buf.Bytes(), 0644) + if err != nil { + return err + } + } return nil } From 5c0b4c70375e0c5de3e08809cdd643062aa93a0b Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Sat, 17 Oct 2015 18:22:56 -0700 Subject: [PATCH 3/4] README: Add generate instructions. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 270239b5..6e098442 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # GopherJS.org +## Generating + +```bash +go generate github.com/gopherjs/gopherjs.github.io/... +``` + ## Todo * Tweak look and feel, logo, etc. From 40ad2e4fafef922142f128382e4a24d10634b844 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Sat, 17 Oct 2015 18:52:04 -0700 Subject: [PATCH 4/4] Remove unneeded blank line. --- generate.go | 1 - 1 file changed, 1 deletion(-) diff --git a/generate.go b/generate.go index d6e7b509..9c9af070 100644 --- a/generate.go +++ b/generate.go @@ -57,7 +57,6 @@ func gen() error { return err } } - return nil }