summaryrefslogtreecommitdiff
path: root/runner_builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'runner_builder.go')
-rw-r--r--runner_builder.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/runner_builder.go b/runner_builder.go
new file mode 100644
index 0000000..b3c07d9
--- /dev/null
+++ b/runner_builder.go
@@ -0,0 +1,42 @@
+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)
+}