Cleanup
This commit is contained in:
parent
512dfcb953
commit
5327d67eae
40
goldsmith.go
40
goldsmith.go
@ -35,61 +35,54 @@ type stage struct {
|
||||
}
|
||||
|
||||
type goldsmith struct {
|
||||
srcPath, dstPath string
|
||||
stages []stage
|
||||
files chan File
|
||||
wg sync.WaitGroup
|
||||
}
|
||||
|
||||
func NewGoldsmith(srcPath, dstPath string) (Goldsmith, error) {
|
||||
gs := &goldsmith{srcPath: srcPath, dstPath: dstPath}
|
||||
if err := gs.scan(); err != nil {
|
||||
func NewGoldsmith(path string) (Goldsmith, error) {
|
||||
gs := new(goldsmith)
|
||||
if err := gs.scan(path); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return gs, nil
|
||||
}
|
||||
|
||||
func (gs *goldsmith) scan() error {
|
||||
matches, err := doublestar.Glob(filepath.Join(gs.srcPath, "**"))
|
||||
func (gs *goldsmith) scan(path string) error {
|
||||
matches, err := doublestar.Glob(filepath.Join(path, "**"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
gs.files = make(chan File, len(matches))
|
||||
s := stage{
|
||||
input: nil,
|
||||
output: make(chan File, len(matches)),
|
||||
}
|
||||
|
||||
for _, match := range matches {
|
||||
path, err := filepath.Rel(gs.srcPath, match)
|
||||
path, err := filepath.Rel(path, match)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
gs.files <- gs.NewFile(path)
|
||||
s.output <- gs.NewFile(path)
|
||||
}
|
||||
|
||||
gs.stages = append(gs.stages, s)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gs *goldsmith) stage() stage {
|
||||
s := stage{output: make(chan File)}
|
||||
if len(gs.stages) == 0 {
|
||||
s.input = gs.files
|
||||
} else {
|
||||
s.input = gs.stages[len(gs.stages)-1].output
|
||||
s := stage{
|
||||
input: gs.stages[len(gs.stages)-1].output,
|
||||
output: make(chan File),
|
||||
}
|
||||
|
||||
gs.stages = append(gs.stages, s)
|
||||
return s
|
||||
}
|
||||
|
||||
func (gs *goldsmith) SrcPath(path string) string {
|
||||
return gs.srcPath
|
||||
}
|
||||
|
||||
func (gs *goldsmith) DstPath(path string) string {
|
||||
return gs.dstPath
|
||||
}
|
||||
|
||||
func (gs *goldsmith) NewFile(path string) File {
|
||||
return &file{path, make(map[string]interface{}), nil}
|
||||
}
|
||||
@ -106,6 +99,7 @@ func (gs *goldsmith) Apply(p Processor) Goldsmith {
|
||||
return gs
|
||||
}
|
||||
|
||||
func (gs *goldsmith) Complete() {
|
||||
func (gs *goldsmith) Complete(path string) error {
|
||||
gs.wg.Wait()
|
||||
return nil
|
||||
}
|
||||
|
5
types.go
5
types.go
@ -25,9 +25,6 @@ package goldsmith
|
||||
import "bytes"
|
||||
|
||||
type Context interface {
|
||||
SrcPath(path string) string
|
||||
DstPath(path string) string
|
||||
|
||||
NewFile(path string) File
|
||||
}
|
||||
|
||||
@ -47,5 +44,5 @@ type Processor interface {
|
||||
|
||||
type Goldsmith interface {
|
||||
Apply(p Processor) Goldsmith
|
||||
Complete()
|
||||
Complete(path string) error
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user