package packr import ( "bytes" "fmt" "os" "time" ) var virtualFileModTime = time.Now() var _ File = virtualFile{} type virtualFile struct { *bytes.Reader Name string info fileInfo } func (f virtualFile) FileInfo() (os.FileInfo, error) { return f.info, nil } func (f virtualFile) Close() error { return nil } func (f virtualFile) Write(p []byte) (n int, err error) { return 0, fmt.Errorf("not implemented") } func (f virtualFile) Readdir(count int) ([]os.FileInfo, error) { return []os.FileInfo{f.info}, nil } func (f virtualFile) Stat() (os.FileInfo, error) { return f.info, nil } func newVirtualFile(name string, b []byte) File { return virtualFile{ Reader: bytes.NewReader(b), Name: name, info: fileInfo{ Path: name, Contents: b, size: int64(len(b)), modTime: virtualFileModTime, }, } } func newVirtualDir(name string) File { var b []byte v := newVirtualFile(name, b).(virtualFile) v.info.isDir = true return v }