haproxytech / config-parser

HAProxy configuration parser
Apache License 2.0
82 stars 33 forks source link

Should be possible to obtain the lines for a single attribute path from the parser. #56

Open csabatuz-chess opened 1 year ago

csabatuz-chess commented 1 year ago

Assuming

import (
  parser "github.com/haproxytech/config-parser/v5"
)
...
  p := parser.New(content, options)

Currently it's possible to obtain the parsed models for all supported attributes like

log, err := p.Get(parser.Global, parser.GlobalSectionName, "log") // ([]types.Log, error)
...

It's also possible to update the data associated with the same attribute

err := p.Set(parser.Global, parser.GlobalSectionName, "log", log)

One can also render the full config using

p.String()

Proposal In one of our use cases, we would like to obtain the resulting lines from such updates for a given attribute path. So e.g.

lines, err := p.Render(parser.Global, parser.GlobalSectionName, "log")

Currently the lack of such granular access prevents us from effectively using the Config Parser code for our use case.

(Happily) wiling to contribute code if this feature makes sense.

oktalz commented 1 year ago

this is what Result function is doing in parsers right?, its just that is not exposed or available

if you are willing to contribute, we can discuss that (on objections on feature as long as it does not bring large complexity)