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"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type file struct {
|
type file struct {
|
||||||
path string
|
path string
|
||||||
Meta map[string]interface{}
|
Meta map[string]interface{}
|
||||||
|
|
||||||
reader *bytes.Reader
|
reader *bytes.Reader
|
||||||
asset string
|
size int64
|
||||||
|
modTime time.Time
|
||||||
|
|
||||||
|
asset string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *file) export(dstDir string) error {
|
func (f *file) export(dstDir string) error {
|
||||||
@ -99,10 +103,26 @@ func (f *file) Path() string {
|
|||||||
return f.path
|
return f.path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *file) Name() string {
|
||||||
|
return path.Base(f.path)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *file) Dir() string {
|
func (f *file) Dir() string {
|
||||||
return path.Dir(f.path)
|
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) {
|
func (f *file) Value(key string) (interface{}, bool) {
|
||||||
value, ok := f.Meta[key]
|
value, ok := f.Meta[key]
|
||||||
return value, ok
|
return value, ok
|
||||||
|
33
goldsmith.go
33
goldsmith.go
@ -25,6 +25,8 @@ package goldsmith
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Goldsmith interface {
|
type Goldsmith interface {
|
||||||
@ -40,7 +42,11 @@ func Begin(srcDir string) Goldsmith {
|
|||||||
|
|
||||||
type File interface {
|
type File interface {
|
||||||
Path() string
|
Path() string
|
||||||
|
Name() string
|
||||||
Dir() string
|
Dir() string
|
||||||
|
Ext() string
|
||||||
|
Size() int64
|
||||||
|
ModTime() time.Time
|
||||||
|
|
||||||
Value(key string) (interface{}, bool)
|
Value(key string) (interface{}, bool)
|
||||||
SetValue(key string, value interface{})
|
SetValue(key string, value interface{})
|
||||||
@ -53,18 +59,29 @@ type File interface {
|
|||||||
|
|
||||||
func NewFileFromData(path string, data []byte) File {
|
func NewFileFromData(path string, data []byte) File {
|
||||||
return &file{
|
return &file{
|
||||||
path: path,
|
path: path,
|
||||||
Meta: make(map[string]interface{}),
|
Meta: make(map[string]interface{}),
|
||||||
reader: bytes.NewReader(data),
|
reader: bytes.NewReader(data),
|
||||||
|
size: int64(len(data)),
|
||||||
|
modTime: time.Now(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFileFromAsset(path, asset string) File {
|
func NewFileFromAsset(path, asset string) (File, error) {
|
||||||
return &file{
|
info, err := os.Stat(asset)
|
||||||
path: path,
|
if err != nil {
|
||||||
Meta: make(map[string]interface{}),
|
return nil, err
|
||||||
asset: asset,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f := &file{
|
||||||
|
path: path,
|
||||||
|
Meta: make(map[string]interface{}),
|
||||||
|
size: info.Size(),
|
||||||
|
modTime: info.ModTime(),
|
||||||
|
asset: asset,
|
||||||
|
}
|
||||||
|
|
||||||
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type Context interface {
|
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)
|
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)
|
ctx.DispatchFile(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user