grim/convey

Parents 2372326b8e83
Children 9d2745690a29
Treat the plans specified on the command line as a metaplan and give MetaPlan an Execute method
--- a/runner/cmd.go Thu Dec 23 16:07:04 2021 -0600
+++ b/runner/cmd.go Thu Dec 23 16:11:49 2021 -0600
@@ -45,37 +45,6 @@
Plans []string `kong:"arg,help='The names of the plans to run',default='default'"`
}
-func (c *RunnerCmd) runPlans(ctx context.Context, rt *runtime.Runtime) error {
- errChan := make(chan error, 1)
-
- cancelled := false
-
- go func() {
- for _, name := range c.Plans {
- plan := rt.Plans[name]
-
- if err := plan.Execute(name, rt); err != nil {
- errChan <- err
- return
- }
-
- if cancelled {
- break
- }
- }
- errChan <- nil
- }()
-
- for {
- select {
- case err := <-errChan:
- return err
- case <-ctx.Done():
- cancelled = true
- }
- }
-}
-
func (c *RunnerCmd) loadConfig() (string, *config.Config, error) {
cfg, err := config.LoadFile(c.ConfigFile)
if err != nil {
@@ -124,7 +93,11 @@
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context, cfg *config.Config) {
- errChan <- c.runPlans(ctx, rt)
+ metaplan := &runtime.MetaPlan{
+ Plans: c.Plans,
+ }
+
+ errChan <- metaplan.Execute(ctx, rt)
}(ctx, cfg)
for {
--- a/runtime/metaplans.go Thu Dec 23 16:07:04 2021 -0600
+++ b/runtime/metaplans.go Thu Dec 23 16:11:49 2021 -0600
@@ -17,6 +17,7 @@
package runtime
import (
+ "context"
"fmt"
)
@@ -42,3 +43,43 @@
return nil
}
+
+// Execute runs the MetaPlan
+func (m *MetaPlan) Execute(ctx context.Context, rt *Runtime) error {
+ errChan := make(chan error, 1)
+
+ cancelled := false
+
+ go func() {
+ for _, name := range m.Plans {
+ mp, ok := rt.MetaPlans[name]
+ if ok {
+ if err := mp.Execute(ctx, rt); err != nil {
+ errChan <- err
+ return
+ }
+ } else {
+ plan := rt.Plans[name]
+
+ if err := plan.Execute(name, rt); err != nil {
+ errChan <- err
+ return
+ }
+ }
+
+ if cancelled {
+ break
+ }
+ }
+ errChan <- nil
+ }()
+
+ for {
+ select {
+ case err := <-errChan:
+ return err
+ case <-ctx.Done():
+ cancelled = true
+ }
+ }
+}