aboutsummaryrefslogtreecommitdiff
path: root/docs/update.go
diff options
context:
space:
mode:
Diffstat (limited to 'docs/update.go')
-rw-r--r--docs/update.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/docs/update.go b/docs/update.go
new file mode 100644
index 0000000..be40427
--- /dev/null
+++ b/docs/update.go
@@ -0,0 +1,71 @@
+//+build ignore
+
+// The update command creates/updates the <html><head> elements of
+// each subpackage beneath docs so that "go get" requests redirect
+// to GitHub and other HTTP requests redirect to godoc.corp.
+//
+// Usage:
+//
+// $ cd $GOPATH/src/go.starlark.net
+// $ go run docs/update.go
+//
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+)
+
+func main() {
+ log.SetFlags(0)
+ log.SetPrefix("update: ")
+
+ cwd, err := os.Getwd()
+ if err != nil {
+ log.Fatal(err)
+ }
+ if filepath.Base(cwd) != "go.starlark.net" {
+ log.Fatalf("must run from the go.starlark.net directory")
+ }
+
+ cmd := exec.Command("go", "list", "./...")
+ cmd.Stdout = new(bytes.Buffer)
+ cmd.Stderr = os.Stderr
+ if err := cmd.Run(); err != nil {
+ log.Fatal(err)
+ }
+ for _, pkg := range strings.Split(strings.TrimSpace(fmt.Sprint(cmd.Stdout)), "\n") {
+ rel := strings.TrimPrefix(pkg, "go.starlark.net/") // e.g. "cmd/starlark"
+ subdir := filepath.Join("docs", rel)
+ if err := os.MkdirAll(subdir, 0777); err != nil {
+ log.Fatal(err)
+ }
+
+ // Create missing docs/$rel/index.html files.
+ html := filepath.Join(subdir, "index.html")
+ if _, err := os.Stat(html); os.IsNotExist(err) {
+ data := strings.Replace(defaultHTML, "$PKG", pkg, -1)
+ if err := ioutil.WriteFile(html, []byte(data), 0666); err != nil {
+ log.Fatal(err)
+ }
+ log.Printf("created %s", html)
+ }
+ }
+}
+
+const defaultHTML = `<html>
+<head>
+ <meta name="go-import" content="go.starlark.net git https://github.com/google/starlark-go"></meta>
+ <meta http-equiv="refresh" content="0;URL='http://godoc.org/$PKG'" /></meta>
+</head>
+<body>
+ Redirecting to godoc.org page for $PKG...
+</body>
+</html>
+`