feat: Manage ini files

This commit is contained in:
Samuel Mutel 2023-10-12 17:51:40 +02:00
parent aaa81ac45a
commit 055f5a826d
No known key found for this signature in database
GPG Key ID: A5D089D3F3C7E821
5 changed files with 46 additions and 1 deletions

View File

@ -130,6 +130,8 @@ func configureDecoder(evaluateTogether bool) (yqlib.Decoder, error) {
func createDecoder(format yqlib.InputFormat, evaluateTogether bool) (yqlib.Decoder, error) {
switch format {
case yqlib.IniInputFormat:
return yqlib.NewIniDecoder(), nil
case yqlib.LuaInputFormat:
return yqlib.NewLuaDecoder(yqlib.ConfiguredLuaPreferences), nil
case yqlib.XMLInputFormat:

1
go.mod
View File

@ -18,6 +18,7 @@ require (
github.com/yuin/gopher-lua v1.1.0
golang.org/x/net v0.17.0
golang.org/x/text v0.13.0
gopkg.in/ini.v1 v1.67.0
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473
gopkg.in/yaml.v3 v3.0.1
)

2
go.sum
View File

@ -63,6 +63,8 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE=
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@ -19,6 +19,7 @@ const (
TomlInputFormat
UriInputFormat
LuaInputFormat
IniInputFormat
)
type Decoder interface {
@ -44,8 +45,10 @@ func InputFormatFromString(format string) (InputFormat, error) {
return TomlInputFormat, nil
case "lua", "l":
return LuaInputFormat, nil
case "ini", "i":
return IniInputFormat, nil
default:
return 0, fmt.Errorf("unknown format '%v' please use [yaml|json|props|csv|tsv|xml|toml]", format)
return 0, fmt.Errorf("unknown format '%v' please use [yaml|json|props|csv|tsv|xml|toml|ini]", format)
}
}

37
pkg/yqlib/decoder_ini.go Normal file
View File

@ -0,0 +1,37 @@
package yqlib
import (
"io"
ini "gopkg.in/ini.v1"
)
type iniDecoder struct {
cfg *ini.File
finished bool
}
func NewIniDecoder() Decoder {
return &iniDecoder{
finished: false,
}
}
func (dec *iniDecoder) Init(reader io.Reader) error {
var err error
dec.cfg, err = ini.Load(reader)
if err != nil {
return err
}
return nil
}
func (dec *iniDecoder) Decode() (*CandidateNode, error) {
if dec.finished {
return nil, io.EOF
}
log.Debug("ok here we go")
return nil, nil
}