github.com/zachgersh/packr@v1.11.1/virtual_file.go (about)

     1  package packr
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"os"
     7  	"time"
     8  )
     9  
    10  var virtualFileModTime = time.Now()
    11  var _ File = virtualFile{}
    12  
    13  type virtualFile struct {
    14  	*bytes.Reader
    15  	Name string
    16  	info fileInfo
    17  }
    18  
    19  func (f virtualFile) FileInfo() (os.FileInfo, error) {
    20  	return f.info, nil
    21  }
    22  
    23  func (f virtualFile) Close() error {
    24  	return nil
    25  }
    26  
    27  func (f virtualFile) Write(p []byte) (n int, err error) {
    28  	return 0, fmt.Errorf("not implemented")
    29  }
    30  
    31  func (f virtualFile) Readdir(count int) ([]os.FileInfo, error) {
    32  	return []os.FileInfo{f.info}, nil
    33  }
    34  
    35  func (f virtualFile) Stat() (os.FileInfo, error) {
    36  	return f.info, nil
    37  }
    38  
    39  func newVirtualFile(name string, b []byte) File {
    40  	return virtualFile{
    41  		Reader: bytes.NewReader(b),
    42  		Name:   name,
    43  		info: fileInfo{
    44  			Path:     name,
    45  			Contents: b,
    46  			size:     int64(len(b)),
    47  			modTime:  virtualFileModTime,
    48  		},
    49  	}
    50  }
    51  
    52  func newVirtualDir(name string) File {
    53  	var b []byte
    54  	v := newVirtualFile(name, b).(virtualFile)
    55  	v.info.isDir = true
    56  	return v
    57  }