github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/config/doc.go (about)

     1  // Copyright (c) 2020-2021, R.I. Pienaar and the Choria Project contributors
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package config
     6  
     7  import (
     8  	"sort"
     9  
    10  	"github.com/choria-io/go-choria/confkey"
    11  )
    12  
    13  func (c *Config) overrideDocDescription(doc *confkey.Doc) *confkey.Doc {
    14  	if doc == nil {
    15  		return doc
    16  	}
    17  
    18  	desc, ok := docStrings[doc.ConfigKey()]
    19  	if ok {
    20  		doc.SetDescription(desc)
    21  	}
    22  
    23  	return doc
    24  }
    25  
    26  func (c *Config) DocForConfigKey(k string) *confkey.Doc {
    27  	doc := confkey.KeyDoc(c, k, "")
    28  	if doc != nil {
    29  		return c.overrideDocDescription(doc)
    30  	}
    31  
    32  	doc = confkey.KeyDoc(c.Choria, k, "Choria")
    33  
    34  	return c.overrideDocDescription(doc)
    35  }
    36  
    37  // ConfigKeys retrieves all known configuration keys matching re
    38  func (c *Config) ConfigKeys(re string) (found []string, err error) {
    39  	found = []string{}
    40  
    41  	keys, err := confkey.FindFields(c, re)
    42  	if err != nil {
    43  		return found, err
    44  	}
    45  
    46  	found = append(found, keys...)
    47  
    48  	keys, err = confkey.FindFields(c.Choria, re)
    49  	if err != nil {
    50  		return found, err
    51  	}
    52  
    53  	found = append(found, keys...)
    54  
    55  	sort.Strings(found)
    56  
    57  	return found, nil
    58  }