aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2011-06-01 15:12:47 -0700
committerRobert Griesemer <gri@golang.org>2011-06-01 15:12:47 -0700
commit59a190589a86a3c77200e5b76c912210ff8148ac (patch)
tree4d66008228ef6f599572dd7d4f2cdb214784b236
parentce2701b2b0bafba079445100a7b220404a4211ad (diff)
downloadgo-59a190589a86a3c77200e5b76c912210ff8148ac.tar.gz
go-59a190589a86a3c77200e5b76c912210ff8148ac.zip
godoc: basic setup for running godoc on local app engine emulator
R=rsc CC=golang-dev https://golang.org/cl/4559058
-rw-r--r--misc/godoc/README22
-rw-r--r--misc/godoc/app.yaml12
-rw-r--r--misc/godoc/init.go35
3 files changed, 69 insertions, 0 deletions
diff --git a/misc/godoc/README b/misc/godoc/README
new file mode 100644
index 0000000000..3c8d830e4d
--- /dev/null
+++ b/misc/godoc/README
@@ -0,0 +1,22 @@
+Instructions to get an initial godoc running on a local app engine emulator
+---------------------------------------------------------------------------
+
+To run godoc under the app engine emulator, create a ("goroot") godoc
+directory that contains the app.yaml file, the doc and lib directories
+from the Go distribution, as well as a godoc directory with the godoc
+sources from src/cmd/godoc. In the godoc source directory, replace
+main.go with init.go. The directory structure should look as follows:
+
+godoc // "goroot" directory
+ app.yaml // app engine control file
+ doc // goroot/doc directory
+ favicon.ico
+ godoc // contains godoc sources
+ godoc.go // unchanged godoc file
+ init.go // this file instead of godoc/main.go
+ ... // remaining godoc files
+ lib // goroot/lib directory
+
+Run app engine emulator locally: dev_appserver.py -a <hostname> godoc
+where godoc is the top-level "goroot" directory. The godoc home page
+is then served at: <hostname>:8080 .
diff --git a/misc/godoc/app.yaml b/misc/godoc/app.yaml
new file mode 100644
index 0000000000..f8b46db31c
--- /dev/null
+++ b/misc/godoc/app.yaml
@@ -0,0 +1,12 @@
+# Copyright 2011 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.
+
+application: godoc
+version: 1
+runtime: go
+api_version: 1
+
+handlers:
+- url: /.*
+ script: _go_app
diff --git a/misc/godoc/init.go b/misc/godoc/init.go
new file mode 100644
index 0000000000..0fd0bd5428
--- /dev/null
+++ b/misc/godoc/init.go
@@ -0,0 +1,35 @@
+// Copyright 2011 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.
+
+// This file replaces main.go when running godoc under the app engine emulator.
+// See the README file for instructions.
+
+package main
+
+import (
+ "http"
+ "log"
+ "os"
+ "path/filepath"
+)
+
+func serveError(w http.ResponseWriter, r *http.Request, relpath string, err os.Error) {
+ contents := applyTemplate(errorHTML, "errorHTML", err) // err may contain an absolute path!
+ w.WriteHeader(http.StatusNotFound)
+ servePage(w, "File "+relpath, "", "", contents)
+}
+
+func init() {
+ // set goroot
+ cwd, err := os.Getwd()
+ if err != nil {
+ log.Fatalf("cwd: %s", err)
+ }
+ log.Printf("cwd = %s", cwd)
+ *goroot = filepath.Clean(cwd)
+
+ initHandlers()
+ readTemplates()
+ registerPublicHandlers(http.DefaultServeMux)
+}