tools/godoc
Agniva De Sarker 006ac430a0 godoc: init corpus in a separate goroutine in http mode
Currently, in http mode the server blocks until the corpus
has been initialized. This can cause considerable delay
if the user workspace is significantly large and the files
are not present in the buffer cache.

This CL spawns off the initialization in a separate goroutine
if httpMode is set and turns on a flag when it's done.
The http handler checks the flag and returns an error response
if it has not been set.

The check is only performed for the path prefixes handled by the
handlerServer struct. Other paths do not call the GetPageInfo() function
and hence can return immediately. This preserves maximum responsiveness
of the server.

Also adds an additional print statement in verbose mode

Note: This is a re-do of a previous CL golang.org/cl/88695 which was
incorrect committed without running tests. This CL fixes that test.

Fixes golang/go#13278

Change-Id: I80c801f32af007312090d3783a2ea2c6f92cad66
Reviewed-on: https://go-review.googlesource.com/93215
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-02-13 20:23:58 +00:00
..
analysis godoc: fix crash in -analysis 2017-06-13 17:41:52 +00:00
dl godoc: fix missing search icon on /dl and correct borders 2017-12-11 20:09:31 +00:00
proxy godoc/proxy: remove unused cacheKey function 2018-01-05 02:11:35 +00:00
redirect x/tools/godoc: fix redirect to Gerrit 2017-07-31 16:24:22 +00:00
short godoc: hide appengine dependencies behind build tags 2016-01-04 23:08:03 +00:00
static godoc,cmd/getgo: update download links to dl.google.com 2018-01-25 02:56:30 +00:00
util tools: add import comments. 2014-12-09 22:42:16 +00:00
vfs godoc: don't try to follow all symlinks 2017-08-07 23:14:37 +00:00
README.md godoc: add GoogleCN property to pages 2017-08-02 21:09:52 +00:00
appengine.go godoc: proxy /compile requests to play.golang.org 2018-01-04 23:58:58 +00:00
cmdline.go x/tools: simplify and format code 2017-02-28 14:15:42 +00:00
cmdline_test.go godoc: add missing copyright 2015-04-27 04:29:37 +00:00
corpus.go godoc: init corpus in a separate goroutine in http mode 2018-02-13 20:23:58 +00:00
dirtrees.go godoc: include dir listing in rate limit, log dir reading errors 2017-07-06 20:06:05 +00:00
format.go go.tools/godoc: Fix jump-to-line in source view. 2013-08-01 11:52:25 +10:00
godoc.go godoc: fix out-of-bounds panic when serving top-level files 2017-08-04 00:32:20 +00:00
godoc17_test.go x/tools/cmd/godoc: fix broken links in composite literals 2017-02-17 22:21:49 +00:00
godoc_test.go godoc: fix out-of-bounds panic when serving top-level files 2017-08-04 00:32:20 +00:00
index.go godoc: remove some unused code 2017-01-09 19:59:23 +00:00
index_test.go x/tools/godoc: gofmt -s -w 2017-02-15 21:42:32 +00:00
linkify.go godoc: use "IsPredeclared" of go/doc 2017-11-15 18:22:28 +00:00
meta.go go.tools: use golang.org/x/... import paths 2014-11-10 08:50:40 +11:00
page.go godoc: add GoogleCN property to pages 2017-08-02 21:09:52 +00:00
parser.go go.tools: use golang.org/x/... import paths 2014-11-10 08:50:40 +11:00
pres.go cmd/godoc: accept GOOS and GOARCH URL parameters in -http mode 2016-02-04 22:11:53 +00:00
search.go godoc: add GoogleCN property to pages 2017-08-02 21:09:52 +00:00
server.go godoc: init corpus in a separate goroutine in http mode 2018-02-13 20:23:58 +00:00
snippet.go godoc: revert support for Go 1.8 aliases 2016-11-04 21:17:32 +00:00
spec.go godoc: move bulk of the code to the package 2013-07-17 17:09:54 +10:00
spot.go godoc: add search results that point to documentation instead of source. 2013-11-21 11:55:42 -05:00
tab.go godoc: add missing copyright 2015-04-27 04:29:37 +00:00
template.go go.tools: use golang.org/x/... import paths 2014-11-10 08:50:40 +11:00

README.md

godoc

This directory contains most of the code for running a godoc server. The executable lives at golang.org/x/tools/cmd/godoc.

Development mode

In production, CSS/JS/template assets need to be compiled into the godoc binary. It can be tedious to recompile assets every time, but you can pass a flag to load CSS/JS/templates from disk every time a page loads:

godoc -templates=$GOPATH/src/golang.org/x/tools/godoc/static -http=:6060

Recompiling static assets

The files that live at static/style.css, static/jquery.js and so on are not present in the final binary. They are placed into static/static.go by running go generate. So to compile a change and test it in your browser:

  1. Make changes to e.g. static/style.css.

  2. Run go generate golang.org/x/tools/godoc/static so static/static.go picks up the change.

  3. Run go install golang.org/x/tools/cmd/godoc so the compiled godoc binary picks up the change.

  4. Run godoc -http=:6060 and view your changes in the browser. You may need to disable your browser's cache to avoid reloading a stale file.