godoc: search GOPATH for documentation

R=rsc, mattn.jp
CC=golang-dev
https://golang.org/cl/4627065
This commit is contained in:
Andrew Gerrand 2011-07-02 14:07:06 +10:00
parent 72a73198df
commit 3cd8f27d79
3 changed files with 21 additions and 8 deletions

View File

@ -9,6 +9,7 @@ import (
"flag"
"fmt"
"go/ast"
"go/build"
"go/doc"
"go/printer"
"go/token"
@ -83,7 +84,15 @@ var (
func initHandlers() {
fsMap.Init(*pkgPath)
paths := filepath.SplitList(*pkgPath)
for _, t := range build.Path {
if t.Goroot {
continue
}
paths = append(paths, t.SrcDir())
}
fsMap.Init(paths)
fileServer = http.FileServer(http.Dir(*goroot))
cmdHandler = httpHandler{"/cmd/", filepath.Join(*goroot, "src", "cmd"), false}
pkgHandler = httpHandler{"/pkg/", filepath.Join(*goroot, "src", "pkg"), true}

View File

@ -31,6 +31,7 @@ import (
"flag"
"fmt"
"go/ast"
"go/build"
"http"
_ "http/pprof" // to serve /debug/pprof/*
"io"
@ -332,7 +333,10 @@ func main() {
}
relpath := path
abspath := path
if !filepath.IsAbs(path) {
if t, pkg, err := build.FindTree(path); err == nil {
relpath = pkg
abspath = filepath.Join(t.SrcDir(), pkg)
} else if !filepath.IsAbs(path) {
abspath = absolutePath(path, pkgHandler.fsRoot)
} else {
relpath = relativeURL(path)

View File

@ -59,10 +59,10 @@ type mapping struct {
}
// Init initializes the Mapping from a list of paths separated by
// filepath.ListSeparator. Empty paths are ignored; relative paths
// are assumed to be relative to the current working directory and
// converted to absolute paths. For each path of the form:
// Init initializes the Mapping from a list of paths.
// Empty paths are ignored; relative paths are assumed to be relative to
// the current working directory and converted to absolute paths.
// For each path of the form:
//
// dirname/localname
//
@ -80,8 +80,8 @@ type mapping struct {
// user -> /home/user
// public -> /home/build/public
//
func (m *Mapping) Init(paths string) {
pathlist := canonicalizePaths(filepath.SplitList(paths), nil)
func (m *Mapping) Init(paths []string) {
pathlist := canonicalizePaths(paths, nil)
list := make([]mapping, len(pathlist))
// create mapping list