Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-07-30 16:14:41 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-07-30 16:21:02 +0300
commita0859dc67284988a397e265f7e83ea07357e9eb8 (patch)
treec55c13a55b474281788ea35433ddc121d26dde5e /source/lazy_file_reader.go
parent94892726816ce0c0af05e10c4706149f4b4baf1c (diff)
Make LazyFileReader use the Afero source fs
Fixes #2317
Diffstat (limited to 'source/lazy_file_reader.go')
-rw-r--r--source/lazy_file_reader.go17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/lazy_file_reader.go b/source/lazy_file_reader.go
index 6e75055ad..8ebe8df21 100644
--- a/source/lazy_file_reader.go
+++ b/source/lazy_file_reader.go
@@ -19,14 +19,15 @@ import (
"errors"
"fmt"
"io"
- "io/ioutil"
- "os"
+
+ "github.com/spf13/afero"
)
// LazyFileReader is an io.Reader implementation to postpone reading the file
// contents until it is really needed. It keeps filename and file contents once
// it is read.
type LazyFileReader struct {
+ fs afero.Fs
filename string
contents *bytes.Reader
pos int64
@@ -35,13 +36,13 @@ type LazyFileReader struct {
// NewLazyFileReader creates and initializes a new LazyFileReader of filename.
// It checks whether the file can be opened. If it fails, it returns nil and an
// error.
-func NewLazyFileReader(filename string) (*LazyFileReader, error) {
- f, err := os.Open(filename)
+func NewLazyFileReader(fs afero.Fs, filename string) (*LazyFileReader, error) {
+ f, err := fs.Open(filename)
if err != nil {
return nil, err
}
defer f.Close()
- return &LazyFileReader{filename: filename, contents: nil, pos: 0}, nil
+ return &LazyFileReader{fs: fs, filename: filename, contents: nil, pos: 0}, nil
}
// Filename returns a file name which LazyFileReader keeps
@@ -55,7 +56,7 @@ func (l *LazyFileReader) Filename() string {
// the file.
func (l *LazyFileReader) Read(p []byte) (n int, err error) {
if l.contents == nil {
- b, err := ioutil.ReadFile(l.filename)
+ b, err := afero.ReadFile(l.fs, l.filename)
if err != nil {
return 0, fmt.Errorf("failed to read content from %s: %s", l.filename, err.Error())
}
@@ -80,7 +81,7 @@ func (l *LazyFileReader) Seek(offset int64, whence int) (pos int64, err error) {
case 1:
pos = l.pos + offset
case 2:
- fi, err := os.Stat(l.filename)
+ fi, err := l.fs.Stat(l.filename)
if err != nil {
return 0, fmt.Errorf("failed to get %q info: %s", l.filename, err.Error())
}
@@ -115,7 +116,7 @@ func (l *LazyFileReader) WriteTo(w io.Writer) (n int64, err error) {
l.pos += n
return n, err
}
- f, err := os.Open(l.filename)
+ f, err := l.fs.Open(l.filename)
if err != nil {
return 0, fmt.Errorf("failed to open %s to read content: %s", l.filename, err.Error())
}