This commit is contained in:
18
provider/dasel/hcl/fixture/config.hcl
Normal file
18
provider/dasel/hcl/fixture/config.hcl
Normal file
@@ -0,0 +1,18 @@
|
||||
app {
|
||||
name {
|
||||
var = [
|
||||
"name"
|
||||
]
|
||||
|
||||
title = "config title"
|
||||
timeout = "1m"
|
||||
success = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
cfg {
|
||||
duration = 1260000000000
|
||||
enabled = true
|
||||
type = "json"
|
||||
}
|
||||
28
provider/dasel/hcl/provider.go
Normal file
28
provider/dasel/hcl/provider.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package hcl
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/tomwright/dasel/v3/parsing"
|
||||
"github.com/tomwright/dasel/v3/parsing/hcl"
|
||||
"gitoa.ru/go-4devs/config"
|
||||
"gitoa.ru/go-4devs/config/provider/dasel"
|
||||
)
|
||||
|
||||
const Name = "dasel:hcl"
|
||||
|
||||
func New(data []byte) (dasel.Provider, error) {
|
||||
readOption := parsing.DefaultReaderOptions()
|
||||
|
||||
reader, err := hcl.HCL.NewReader(readOption)
|
||||
if err != nil {
|
||||
return dasel.Provider{}, fmt.Errorf("%w:%w", config.ErrInitFactory, err)
|
||||
}
|
||||
|
||||
val, verr := reader.Read(data)
|
||||
if verr != nil {
|
||||
return dasel.Provider{}, fmt.Errorf("%w:%w", config.ErrInitFactory, verr)
|
||||
}
|
||||
|
||||
return dasel.New(val, dasel.WithName(Name)), nil
|
||||
}
|
||||
35
provider/dasel/hcl/provider_test.go
Normal file
35
provider/dasel/hcl/provider_test.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package hcl_test
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
dhcl "gitoa.ru/go-4devs/config/provider/dasel/hcl"
|
||||
"gitoa.ru/go-4devs/config/test"
|
||||
"gitoa.ru/go-4devs/config/test/require"
|
||||
)
|
||||
|
||||
//go:embed fixture/*
|
||||
var fixture embed.FS
|
||||
|
||||
func TestProvider(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
js, err := fixture.ReadFile("fixture/config.hcl")
|
||||
require.NoError(t, err)
|
||||
|
||||
prov, derr := dhcl.New(js)
|
||||
require.NoError(t, derr)
|
||||
|
||||
sl := []string{}
|
||||
read := []test.Read{
|
||||
test.NewRead("config title", "app", "name", "title"),
|
||||
test.NewRead(time.Minute, "app.name.timeout"),
|
||||
test.NewReadUnmarshal(&[]string{"name"}, &sl, "app.name.var"),
|
||||
test.NewReadConfig("cfg"),
|
||||
test.NewRead(true, "app", "name", "success"),
|
||||
}
|
||||
|
||||
test.Run(t, prov, read)
|
||||
}
|
||||
Reference in New Issue
Block a user