Adding more info fields to file object
This commit is contained in:
parent
53ecefabcd
commit
a7b084177e
24
file.go
24
file.go
@ -29,14 +29,18 @@ import (
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"time"
|
||||
)
|
||||
|
||||
type file struct {
|
||||
path string
|
||||
Meta map[string]interface{}
|
||||
|
||||
reader *bytes.Reader
|
||||
asset string
|
||||
reader *bytes.Reader
|
||||
size int64
|
||||
modTime time.Time
|
||||
|
||||
asset string
|
||||
}
|
||||
|
||||
func (f *file) export(dstDir string) error {
|
||||
@ -99,10 +103,26 @@ func (f *file) Path() string {
|
||||
return f.path
|
||||
}
|
||||
|
||||
func (f *file) Name() string {
|
||||
return path.Base(f.path)
|
||||
}
|
||||
|
||||
func (f *file) Dir() string {
|
||||
return path.Dir(f.path)
|
||||
}
|
||||
|
||||
func (f *file) Ext() string {
|
||||
return path.Ext(f.path)
|
||||
}
|
||||
|
||||
func (f *file) Size() int64 {
|
||||
return f.size
|
||||
}
|
||||
|
||||
func (f *file) ModTime() time.Time {
|
||||
return f.modTime
|
||||
}
|
||||
|
||||
func (f *file) Value(key string) (interface{}, bool) {
|
||||
value, ok := f.Meta[key]
|
||||
return value, ok
|
||||
|
33
goldsmith.go
33
goldsmith.go
@ -25,6 +25,8 @@ package goldsmith
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Goldsmith interface {
|
||||
@ -40,7 +42,11 @@ func Begin(srcDir string) Goldsmith {
|
||||
|
||||
type File interface {
|
||||
Path() string
|
||||
Name() string
|
||||
Dir() string
|
||||
Ext() string
|
||||
Size() int64
|
||||
ModTime() time.Time
|
||||
|
||||
Value(key string) (interface{}, bool)
|
||||
SetValue(key string, value interface{})
|
||||
@ -53,18 +59,29 @@ type File interface {
|
||||
|
||||
func NewFileFromData(path string, data []byte) File {
|
||||
return &file{
|
||||
path: path,
|
||||
Meta: make(map[string]interface{}),
|
||||
reader: bytes.NewReader(data),
|
||||
path: path,
|
||||
Meta: make(map[string]interface{}),
|
||||
reader: bytes.NewReader(data),
|
||||
size: int64(len(data)),
|
||||
modTime: time.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
func NewFileFromAsset(path, asset string) File {
|
||||
return &file{
|
||||
path: path,
|
||||
Meta: make(map[string]interface{}),
|
||||
asset: asset,
|
||||
func NewFileFromAsset(path, asset string) (File, error) {
|
||||
info, err := os.Stat(asset)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
f := &file{
|
||||
path: path,
|
||||
Meta: make(map[string]interface{}),
|
||||
size: info.Size(),
|
||||
modTime: info.ModTime(),
|
||||
asset: asset,
|
||||
}
|
||||
|
||||
return f, nil
|
||||
}
|
||||
|
||||
type Context interface {
|
||||
|
10
loader.go
10
loader.go
@ -36,7 +36,15 @@ func (*loader) Initialize(ctx Context) error {
|
||||
}
|
||||
|
||||
relPath, _ := filepath.Rel(ctx.SrcDir(), info.path)
|
||||
f := NewFileFromAsset(relPath, info.path)
|
||||
|
||||
f := &file{
|
||||
path: relPath,
|
||||
Meta: make(map[string]interface{}),
|
||||
modTime: info.ModTime(),
|
||||
size: info.Size(),
|
||||
asset: info.path,
|
||||
}
|
||||
|
||||
ctx.DispatchFile(f)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user