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  }