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 }