mirror of
https://github.com/golang/go
synced 2024-11-18 06:34:53 -07:00
8b3cccae50
- Removed the StandAlone and Asset root types as they were just there for other vfses to satisfy the FileSystem interface and causing unnecessary confusion. Returning just empty strings in those scenarios now to clarify that it is a dummy placeholder. - Removed the prefix "Fs" from RootType as it was unnecessary. - Using the RootType type to pass down to the html templates instead of converting to string. The templates are capable of converting to the actual string representation when comparing the value. Change-Id: Iadc039f1354ecd814eec0af1e52cdbaaeff0cc89 Reviewed-on: https://go-review.googlesource.com/106196 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
// 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.
|
|
|
|
// Package vfs defines types for abstract file system access and provides an
|
|
// implementation accessing the file system of the underlying OS.
|
|
package vfs // import "golang.org/x/tools/godoc/vfs"
|
|
|
|
import (
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
// RootType indicates the type of files contained within a directory.
|
|
//
|
|
// It is used to indicate whether a directory is the root
|
|
// of a GOROOT, a GOPATH, or neither.
|
|
// An empty string represents the case when a directory is neither.
|
|
type RootType string
|
|
|
|
const (
|
|
RootTypeGoRoot RootType = "GOROOT"
|
|
RootTypeGoPath RootType = "GOPATH"
|
|
)
|
|
|
|
// The FileSystem interface specifies the methods godoc is using
|
|
// to access the file system for which it serves documentation.
|
|
type FileSystem interface {
|
|
Opener
|
|
Lstat(path string) (os.FileInfo, error)
|
|
Stat(path string) (os.FileInfo, error)
|
|
ReadDir(path string) ([]os.FileInfo, error)
|
|
RootType(path string) RootType
|
|
String() string
|
|
}
|
|
|
|
// Opener is a minimal virtual filesystem that can only open regular files.
|
|
type Opener interface {
|
|
Open(name string) (ReadSeekCloser, error)
|
|
}
|
|
|
|
// A ReadSeekCloser can Read, Seek, and Close.
|
|
type ReadSeekCloser interface {
|
|
io.Reader
|
|
io.Seeker
|
|
io.Closer
|
|
}
|
|
|
|
// ReadFile reads the file named by path from fs and returns the contents.
|
|
func ReadFile(fs Opener, path string) ([]byte, error) {
|
|
rc, err := fs.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rc.Close()
|
|
return ioutil.ReadAll(rc)
|
|
}
|