diff --git a/cmd/node-prune/main.go b/cmd/node-prune/main.go index 26e9993..f8a581b 100644 --- a/cmd/node-prune/main.go +++ b/cmd/node-prune/main.go @@ -22,15 +22,13 @@ func main() { start := time.Now() - if dir == "" { - dir = "node_modules" - } - if *debug { log.SetLevel(log.DebugLevel) } - stats, err := prune.Prune(dir) + p := prune.New(prune.WithDir(dir)) + + stats, err := p.Prune() if err != nil { log.Fatalf("error: %s", err) } diff --git a/prune.go b/prune.go index 5bb423f..fbc1323 100644 --- a/prune.go +++ b/prune.go @@ -22,9 +22,23 @@ type Pruner struct { Log log.Interface } -// Prune dir of unnecessary files. -func Prune(dir string) (*Stats, error) { - return Pruner{dir, log.Log}.Prune() +// Option function. +type Option func(*Pruner) + +// New with the given options. +func New(options ...Option) *Pruner { + v := &Pruner{Dir: "node_modules", Log: log.Log} + for _, o := range options { + o(v) + } + return v +} + +// WithDir option. +func WithDir(s string) Option { + return func(v *Pruner) { + v.Dir = s + } } // Prune performs the pruning.