package plan

import (
	"cuelang.org/go/cue"
)

type Action struct {
	Name     string
	Hidden   bool
	Path     cue.Path
	Comment  string
	Children []*Action
	// pkg      string
}

func (a *Action) AddChild(c *Action) {
	a.Children = append(a.Children, c)
}

func (a *Action) FindByPath(path cue.Path) *Action {
	queue := []*Action{a}

	for len(queue) > 0 {
		nextUp := queue[0]
		queue = queue[1:]
		if nextUp.Path.String() == path.String() {
			return nextUp
		}
		if len(nextUp.Children) > 0 {
			queue = append(queue, nextUp.Children...)
		}
	}
	return nil
}