package planr type RunnerBuilder struct { adapters map[string] Adapter dirs DirConfig } func ConfigureRunner() RunnerBuilder { builder := RunnerBuilder{} builder.adapters = make(map[string] Adapter, 0) return builder } func RegisterAdapter(b RunnerBuilder, a Adapter) RunnerBuilder { nm := a.Config().Name b.adapters[nm] = a return b } func SetConfigDirFromTree(b RunnerBuilder, childPath string) RunnerBuilder { b.dirs.SetConfigFromTree(childPath) return b } func SetConfigDir(b RunnerBuilder, dir string) RunnerBuilder { b.dirs.SetConfig(dir) return b } func SetBuildDir(b RunnerBuilder, dir string) RunnerBuilder { b.dirs.SetBuild(dir) return b } func SetSrcDir(b RunnerBuilder, dir string) RunnerBuilder { b.dirs.SetSrc(dir) return b } func (b RunnerBuilder) New() Runner { return NewRunner(b.adapters, b.dirs) }