if you change types/types.go you need to run
go run go-generate.go $(pwd)For commit messages and general style please follow the haproxy project's CONTRIBUTING guide and use that where applicable.
Please use golangci-lint run from github.com/golangci/golangci-lint for linting code.
package main import ( "github.com/haproxytech/config-parser/v2"// ... ) // ...funcmain(){p:= parser.Parser{} err:=p.LoadData("/path/to/haproxy/file.cfg") log.Println(err) log.Println(p.String()){data, _:=p.Get(parser.Comments, parser.CommentsSectionName, "# _version", true) iferr==errors.ErrFetch{log.Panicln("we have an fetch error !!") } ver, _:=data.(*types.Int64C) ver.Value=ver.Value+1 }{p.Set(parser.Frontends, "http", "option forwardfor", types.OptionForwardFor{}) }{data, err:=p.Get(parser.Global, parser.GlobalSectionName, "stats socket") iferr!=nil{log.Panicln(err) } val, _:=data.([]types.Socket) log.Println(val[0]) val[0].Path="$PWD/haproxy-runtime-api.1.sock"log.Println(val[0]) }{data, err:=p.Get(parser.Global, parser.GlobalSectionName, "daemon") log.Println(data, err) iferr==errors.ErrFetch{log.Panicln("we have an fetch error !!") } //remove itp.Set(parser.Global, parser.GlobalSectionName, "daemon", nil) }{datar, err:=p.Get(parser.Resolvers, "ns1", "nameserver") iferr==nil{ns:=datar.([]types.Nameserver) log.Println(ns[0].Name, ns[0].Address) log.Println(ns[1].Name, ns[1].Address) ns[1].Name="hahaha"ns[0].Address="0.0.0.0:8080" } datar, err=p.Get(parser.Resolvers, "ns1", "nameserver") iferr==nil{ns:=datar.([]types.Nameserver) log.Println(ns[0].Name, ns[0].Address) log.Println(ns[1].Name, ns[1].Address) } }{log.Println("nbproc ==================================================") data, err:=p.Get(parser.Global, parser.GlobalSectionName, "nbproc") iferr!=nil{log.Println(err) } else{d:=data.(*types.Int64C) log.Println(d.Value) d.Value=5 } } p.Save(configFilename) }