func ResolveHostGroups(host string, groups map[string][]string,
detectedGroups []string) ([]string, error) {
func ResolveHostGroups(host string, groups map[string][]string,
detectedGroups []string) ([]string, error) {
detectedGroupsMap := make(map[string]bool)
for _, x := range detectedGroups {
detectedGroupsMap := make(map[string]bool)
for _, x := range detectedGroups {
// groups).
var lookup func(string, int) bool
lookup = func(group string, depth int) bool {
// groups).
var lookup func(string, int) bool
lookup = func(group string, depth int) bool {
// TransitivelyDetectedGroups returns all groups which depend on "detected"
// groups, either directly or by depending on groups which transitively depend
// on "detected" groups.
// TransitivelyDetectedGroups returns all groups which depend on "detected"
// groups, either directly or by depending on groups which transitively depend
// on "detected" groups.
work := make(map[string][]string)
for k, v := range groups {
work[k] = v
work := make(map[string][]string)
for k, v := range groups {
work[k] = v