...

Source file src/github.com/go-kivik/kivik/v4/x/fsdb/filesystem/fs.go

Documentation: github.com/go-kivik/kivik/v4/x/fsdb/filesystem

     1  // Licensed under the Apache License, Version 2.0 (the "License"); you may not
     2  // use this file except in compliance with the License. You may obtain a copy of
     3  // the License at
     4  //
     5  //  http://www.apache.org/licenses/LICENSE-2.0
     6  //
     7  // Unless required by applicable law or agreed to in writing, software
     8  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     9  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    10  // License for the specific language governing permissions and limitations under
    11  // the License.
    12  
    13  // Package filesystem provides an abstraction around a filesystem
    14  package filesystem
    15  
    16  import (
    17  	"io"
    18  	"os"
    19  )
    20  
    21  // Filesystem is a filesystem implementation.
    22  type Filesystem interface {
    23  	Mkdir(name string, perm os.FileMode) error
    24  	MkdirAll(path string, perm os.FileMode) error
    25  	Open(string) (File, error)
    26  	Create(string) (File, error)
    27  	Stat(string) (os.FileInfo, error)
    28  	TempFile(dir, pattern string) (File, error)
    29  	Rename(oldpath, newpath string) error
    30  	Remove(name string) error
    31  	Link(oldname, newname string) error
    32  }
    33  
    34  type defaultFS struct{}
    35  
    36  var _ Filesystem = &defaultFS{}
    37  
    38  func (fs *defaultFS) Mkdir(name string, perm os.FileMode) error {
    39  	return os.Mkdir(name, perm)
    40  }
    41  
    42  func (fs *defaultFS) MkdirAll(path string, perm os.FileMode) error {
    43  	return os.MkdirAll(path, perm)
    44  }
    45  
    46  func (fs *defaultFS) Open(name string) (File, error) {
    47  	return os.Open(name)
    48  }
    49  
    50  func (fs *defaultFS) TempFile(dir, pattern string) (File, error) {
    51  	return os.CreateTemp(dir, pattern)
    52  }
    53  
    54  func (fs *defaultFS) Create(name string) (File, error) {
    55  	return os.Create(name)
    56  }
    57  
    58  func (fs *defaultFS) Stat(name string) (os.FileInfo, error) {
    59  	return os.Stat(name)
    60  }
    61  
    62  func (fs *defaultFS) Rename(oldpath, newpath string) error {
    63  	return os.Rename(oldpath, newpath)
    64  }
    65  
    66  func (fs *defaultFS) Remove(name string) error {
    67  	return os.Remove(name)
    68  }
    69  
    70  func (fs *defaultFS) Link(oldname, newname string) error {
    71  	return os.Link(oldname, newname)
    72  }
    73  
    74  // File represents a file object.
    75  type File interface {
    76  	io.Reader
    77  	io.Closer
    78  	io.Writer
    79  	io.ReaderAt
    80  	io.Seeker
    81  	Name() string
    82  	Readdir(int) ([]os.FileInfo, error)
    83  	Stat() (os.FileInfo, error)
    84  }
    85  
    86  type defaultFile struct {
    87  	*os.File
    88  }
    89  
    90  var _ File = &defaultFile{}
    91  
    92  // Default returns the default filesystem implementation.
    93  func Default() Filesystem {
    94  	return &defaultFS{}
    95  }
    96  

View as plain text