Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / godoc / vfs / vfs.go
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Package vfs defines types for abstract file system access and provides an
6 // implementation accessing the file system of the underlying OS.
7 package vfs // import "golang.org/x/tools/godoc/vfs"
8
9 import (
10         "io"
11         "io/ioutil"
12         "os"
13 )
14
15 // RootType indicates the type of files contained within a directory.
16 //
17 // It is used to indicate whether a directory is the root
18 // of a GOROOT, a GOPATH, or neither.
19 // An empty string represents the case when a directory is neither.
20 type RootType string
21
22 const (
23         RootTypeGoRoot RootType = "GOROOT"
24         RootTypeGoPath RootType = "GOPATH"
25 )
26
27 // The FileSystem interface specifies the methods godoc is using
28 // to access the file system for which it serves documentation.
29 type FileSystem interface {
30         Opener
31         Lstat(path string) (os.FileInfo, error)
32         Stat(path string) (os.FileInfo, error)
33         ReadDir(path string) ([]os.FileInfo, error)
34         RootType(path string) RootType
35         String() string
36 }
37
38 // Opener is a minimal virtual filesystem that can only open regular files.
39 type Opener interface {
40         Open(name string) (ReadSeekCloser, error)
41 }
42
43 // A ReadSeekCloser can Read, Seek, and Close.
44 type ReadSeekCloser interface {
45         io.Reader
46         io.Seeker
47         io.Closer
48 }
49
50 // ReadFile reads the file named by path from fs and returns the contents.
51 func ReadFile(fs Opener, path string) ([]byte, error) {
52         rc, err := fs.Open(path)
53         if err != nil {
54                 return nil, err
55         }
56         defer rc.Close()
57         return ioutil.ReadAll(rc)
58 }