From 68b85925882613489ae358239cbbb6b82fa34961 Mon Sep 17 00:00:00 2001 From: TJ Holowaychuk Date: Sat, 18 Nov 2017 17:29:56 -0800 Subject: [PATCH] add options --- cmd/node-prune/main.go | 8 +++----- prune.go | 20 +++++++++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) 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.