|
- // Copyright 2013 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 or at
- // https://developers.google.com/open-source/licenses/bsd.
-
- package gosrc
-
- import (
- "go/build"
- "io/ioutil"
- "path/filepath"
- "strconv"
- "time"
- )
-
- var localPath string
-
- // SetLocalDevMode sets the package to local development mode. In this mode,
- // the GOPATH specified by path is used to find directories instead of version
- // control services.
- func SetLocalDevMode(path string) {
- localPath = path
- }
-
- func getLocal(importPath string) (*Directory, error) {
- ctx := build.Default
- if localPath != "" {
- ctx.GOPATH = localPath
- }
- bpkg, err := ctx.Import(importPath, ".", build.FindOnly)
- if err != nil {
- return nil, err
- }
- dir := filepath.Join(bpkg.SrcRoot, filepath.FromSlash(importPath))
- fis, err := ioutil.ReadDir(dir)
- if err != nil {
- return nil, err
- }
- var modTime time.Time
- var files []*File
- for _, fi := range fis {
- if fi.IsDir() || !isDocFile(fi.Name()) {
- continue
- }
- if fi.ModTime().After(modTime) {
- modTime = fi.ModTime()
- }
- b, err := ioutil.ReadFile(filepath.Join(dir, fi.Name()))
- if err != nil {
- return nil, err
- }
- files = append(files, &File{
- Name: fi.Name(),
- Data: b,
- })
- }
- return &Directory{
- ImportPath: importPath,
- Etag: strconv.FormatInt(modTime.Unix(), 16),
- Files: files,
- }, nil
- }
|