diff --git a/godoc/static/bake.go b/godoc/static/bake.go deleted file mode 100644 index b7e61579..00000000 --- a/godoc/static/bake.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// Command bake takes a list of file names and writes a Go source file to -// standard output that declares a map of string constants containing the input files. -// -// For example, the command -// bake foo.html bar.txt -// produces a source file in package main that declares the variable bakedFiles -// that is a map with keys "foo.html" and "bar.txt" that contain the contents -// of foo.html and bar.txt. -package main - -import ( - "bufio" - "bytes" - "fmt" - "io/ioutil" - "os" - "unicode/utf8" -) - -func main() { - if err := bake(os.Args[1:]); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func bake(files []string) error { - w := bufio.NewWriter(os.Stdout) - fmt.Fprintf(w, "%v\n\npackage static\n\n", warning) - fmt.Fprintf(w, "var Files = map[string]string{\n") - for _, fn := range files { - b, err := ioutil.ReadFile(fn) - if err != nil { - return err - } - fmt.Fprintf(w, "\t%q: ", fn) - if utf8.Valid(b) { - fmt.Fprintf(w, "`%s`", sanitize(b)) - } else { - fmt.Fprintf(w, "%q", b) - } - fmt.Fprintln(w, ",\n") - } - fmt.Fprintln(w, "}") - return w.Flush() -} - -// sanitize prepares a valid UTF-8 string as a raw string constant. -func sanitize(b []byte) []byte { - // Replace ` with `+"`"+` - b = bytes.Replace(b, []byte("`"), []byte("`+\"`\"+`"), -1) - - // Replace BOM with `+"\xEF\xBB\xBF"+` - // (A BOM is valid UTF-8 but not permitted in Go source files. - // I wouldn't bother handling this, but for some insane reason - // jquery.js has a BOM somewhere in the middle.) - return bytes.Replace(b, []byte("\xEF\xBB\xBF"), []byte("`+\"\\xEF\\xBB\\xBF\"+`"), -1) -} - -const warning = "// DO NOT EDIT ** This file was generated with the bake tool ** DO NOT EDIT //" diff --git a/godoc/static/bake.sh b/godoc/static/bake.sh deleted file mode 100755 index 42f31bf3..00000000 --- a/godoc/static/bake.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2013 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -set -e - -STATIC=" - analysis/call3.png - analysis/call-eg.png - analysis/callers1.png - analysis/callers2.png - analysis/chan1.png - analysis/chan2a.png - analysis/chan2b.png - analysis/error1.png - analysis/help.html - analysis/ident-def.png - analysis/ident-field.png - analysis/ident-func.png - analysis/ipcg-func.png - analysis/ipcg-pkg.png - analysis/typeinfo-pkg.png - analysis/typeinfo-src.png - callgraph.html - codewalk.html - codewalkdir.html - dirlist.html - error.html - example.html - godoc.html - godocs.js - images/minus.gif - images/plus.gif - images/treeview-black-line.gif - images/treeview-black.gif - images/treeview-default-line.gif - images/treeview-default.gif - images/treeview-gray-line.gif - images/treeview-gray.gif - implements.html - jquery.js - jquery.treeview.css - jquery.treeview.edit.js - jquery.treeview.js - methodset.html - opensearch.xml - package.html - package.txt - play.js - playground.js - search.html - search.txt - searchcode.html - searchdoc.html - searchtxt.html - style.css -" - -go run bake.go $STATIC | gofmt > static.go diff --git a/godoc/static/gen.go b/godoc/static/gen.go new file mode 100644 index 00000000..42268211 --- /dev/null +++ b/godoc/static/gen.go @@ -0,0 +1,7 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package static + +//go:generate go run makestatic.go diff --git a/godoc/static/makestatic.go b/godoc/static/makestatic.go new file mode 100644 index 00000000..b3b9c5f6 --- /dev/null +++ b/godoc/static/makestatic.go @@ -0,0 +1,120 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Command bake reads a set of files and writes a Go source file to "static.go" +// that declares a map of string constants containing contents of the input files. +package main + +import ( + "bufio" + "bytes" + "fmt" + "io/ioutil" + "os" + "unicode/utf8" +) + +var files = []string{ + "analysis/call3.png", + "analysis/call-eg.png", + "analysis/callers1.png", + "analysis/callers2.png", + "analysis/chan1.png", + "analysis/chan2a.png", + "analysis/chan2b.png", + "analysis/error1.png", + "analysis/help.html", + "analysis/ident-def.png", + "analysis/ident-field.png", + "analysis/ident-func.png", + "analysis/ipcg-func.png", + "analysis/ipcg-pkg.png", + "analysis/typeinfo-pkg.png", + "analysis/typeinfo-src.png", + "callgraph.html", + "codewalk.html", + "codewalkdir.html", + "dirlist.html", + "error.html", + "example.html", + "godoc.html", + "godocs.js", + "images/minus.gif", + "images/plus.gif", + "images/treeview-black-line.gif", + "images/treeview-black.gif", + "images/treeview-default-line.gif", + "images/treeview-default.gif", + "images/treeview-gray-line.gif", + "images/treeview-gray.gif", + "implements.html", + "jquery.js", + "jquery.treeview.css", + "jquery.treeview.edit.js", + "jquery.treeview.js", + "methodset.html", + "opensearch.xml", + "package.html", + "package.txt", + "play.js", + "playground.js", + "search.html", + "search.txt", + "searchcode.html", + "searchdoc.html", + "searchtxt.html", + "style.css", +} + +func main() { + if err := bake(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func bake() error { + f, err := os.Create("static.go") + if err != nil { + return err + } + defer f.Close() + w := bufio.NewWriter(f) + fmt.Fprintf(w, "%v\n\npackage static\n\n", warning) + fmt.Fprintf(w, "var Files = map[string]string{\n") + for _, fn := range files { + b, err := ioutil.ReadFile(fn) + if err != nil { + return err + } + fmt.Fprintf(w, "\t%q: ", fn) + if utf8.Valid(b) { + fmt.Fprintf(w, "`%s`", sanitize(b)) + } else { + fmt.Fprintf(w, "%q", b) + } + fmt.Fprintln(w, ",\n") + } + fmt.Fprintln(w, "}") + if err := w.Flush(); err != nil { + return err + } + return f.Close() +} + +// sanitize prepares a valid UTF-8 string as a raw string constant. +func sanitize(b []byte) []byte { + // Replace ` with `+"`"+` + b = bytes.Replace(b, []byte("`"), []byte("`+\"`\"+`"), -1) + + // Replace BOM with `+"\xEF\xBB\xBF"+` + // (A BOM is valid UTF-8 but not permitted in Go source files. + // I wouldn't bother handling this, but for some insane reason + // jquery.js has a BOM somewhere in the middle.) + return bytes.Replace(b, []byte("\xEF\xBB\xBF"), []byte("`+\"\\xEF\\xBB\\xBF\"+`"), -1) +} + +const warning = "// DO NOT EDIT ** This file was generated with the bake tool ** DO NOT EDIT //"