github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/providers/appbuilder/util.go (about) 1 // Copyright (c) 2022, R.I. Pienaar and the Choria Project contributors 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package appbuilder 6 7 import ( 8 "github.com/choria-io/appbuilder/builder" 9 "github.com/choria-io/go-choria/client/discovery" 10 ) 11 12 func ProcessStdDiscoveryOptions(f *discovery.StandardOptions, arguments map[string]any, flags map[string]any, config any) error { 13 var err error 14 15 if f.DiscoveryMethod != "" { 16 f.DiscoveryMethod, err = builder.ParseStateTemplate(f.DiscoveryMethod, arguments, flags, config) 17 if err != nil { 18 return err 19 } 20 } 21 22 for k, v := range f.DiscoveryOptions { 23 f.DiscoveryOptions[k], err = builder.ParseStateTemplate(v, arguments, flags, config) 24 if err != nil { 25 return err 26 } 27 } 28 29 if f.Collective != "" { 30 f.Collective, err = builder.ParseStateTemplate(f.Collective, arguments, flags, config) 31 if err != nil { 32 return err 33 } 34 } 35 36 if f.NodesFile != "" { 37 f.NodesFile, err = builder.ParseStateTemplate(f.NodesFile, arguments, flags, config) 38 if err != nil { 39 return err 40 } 41 } 42 43 if f.CompoundFilter != "" { 44 f.CompoundFilter, err = builder.ParseStateTemplate(f.CompoundFilter, arguments, flags, config) 45 if err != nil { 46 return err 47 } 48 } 49 50 for i, item := range f.CombinedFilter { 51 f.CombinedFilter[i], err = builder.ParseStateTemplate(item, arguments, flags, config) 52 if err != nil { 53 return err 54 } 55 } 56 57 for i, item := range f.IdentityFilter { 58 f.IdentityFilter[i], err = builder.ParseStateTemplate(item, arguments, flags, config) 59 if err != nil { 60 return err 61 } 62 } 63 64 for i, item := range f.AgentFilter { 65 f.AgentFilter[i], err = builder.ParseStateTemplate(item, arguments, flags, config) 66 if err != nil { 67 return err 68 } 69 } 70 71 for i, item := range f.ClassFilter { 72 f.ClassFilter[i], err = builder.ParseStateTemplate(item, arguments, flags, config) 73 if err != nil { 74 return err 75 } 76 } 77 78 for i, item := range f.FactFilter { 79 f.FactFilter[i], err = builder.ParseStateTemplate(item, arguments, flags, config) 80 if err != nil { 81 return err 82 } 83 } 84 85 return nil 86 }