You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
72 lines
1.7 KiB
//+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>
|
|
`
|