]> Cypherpunks repositories - gostls13.git/commitdiff
godoc: basic setup for running godoc on local app engine emulator
authorRobert Griesemer <gri@golang.org>
Wed, 1 Jun 2011 22:12:47 +0000 (15:12 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 1 Jun 2011 22:12:47 +0000 (15:12 -0700)
R=rsc
CC=golang-dev
https://golang.org/cl/4559058

misc/godoc/README [new file with mode: 0644]
misc/godoc/app.yaml [new file with mode: 0644]
misc/godoc/init.go [new file with mode: 0644]

diff --git a/misc/godoc/README b/misc/godoc/README
new file mode 100644 (file)
index 0000000..3c8d830
--- /dev/null
@@ -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 (file)
index 0000000..f8b46db
--- /dev/null
@@ -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 (file)
index 0000000..0fd0bd5
--- /dev/null
@@ -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)
+}