blob: be40427924e466175f80976a86785b8728f425b3 [file] [log] [blame]
Alan Donovan551f3002018-11-01 09:44:00 -04001//+build ignore
2
3// The update command creates/updates the <html><head> elements of
4// each subpackage beneath docs so that "go get" requests redirect
5// to GitHub and other HTTP requests redirect to godoc.corp.
6//
7// Usage:
8//
9// $ cd $GOPATH/src/go.starlark.net
10// $ go run docs/update.go
11//
12package main
13
14import (
15 "bytes"
16 "fmt"
17 "io/ioutil"
18 "log"
19 "os"
20 "os/exec"
21 "path/filepath"
22 "strings"
23)
24
25func main() {
26 log.SetFlags(0)
27 log.SetPrefix("update: ")
28
29 cwd, err := os.Getwd()
30 if err != nil {
31 log.Fatal(err)
32 }
33 if filepath.Base(cwd) != "go.starlark.net" {
34 log.Fatalf("must run from the go.starlark.net directory")
35 }
36
37 cmd := exec.Command("go", "list", "./...")
38 cmd.Stdout = new(bytes.Buffer)
39 cmd.Stderr = os.Stderr
40 if err := cmd.Run(); err != nil {
41 log.Fatal(err)
42 }
43 for _, pkg := range strings.Split(strings.TrimSpace(fmt.Sprint(cmd.Stdout)), "\n") {
44 rel := strings.TrimPrefix(pkg, "go.starlark.net/") // e.g. "cmd/starlark"
45 subdir := filepath.Join("docs", rel)
46 if err := os.MkdirAll(subdir, 0777); err != nil {
47 log.Fatal(err)
48 }
49
50 // Create missing docs/$rel/index.html files.
51 html := filepath.Join(subdir, "index.html")
52 if _, err := os.Stat(html); os.IsNotExist(err) {
53 data := strings.Replace(defaultHTML, "$PKG", pkg, -1)
54 if err := ioutil.WriteFile(html, []byte(data), 0666); err != nil {
55 log.Fatal(err)
56 }
57 log.Printf("created %s", html)
58 }
59 }
60}
61
62const defaultHTML = `<html>
63<head>
64 <meta name="go-import" content="go.starlark.net git https://github.com/google/starlark-go"></meta>
65 <meta http-equiv="refresh" content="0;URL='http://godoc.org/$PKG'" /></meta>
66</head>
67<body>
68 Redirecting to godoc.org page for $PKG...
69</body>
70</html>
71`