Bump github.com/gookit/config/v2 from 2.2.3 to 2.2.4

Bumps [github.com/gookit/config/v2](https://github.com/gookit/config) from 2.2.3 to 2.2.4.
- [Release notes](https://github.com/gookit/config/releases)
- [Commits](https://github.com/gookit/config/compare/v2.2.3...v2.2.4)

---
updated-dependencies:
- dependency-name: github.com/gookit/config/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot]
2023-11-03 10:26:28 +01:00
committed by Ralf Haferkamp
parent 30784affc4
commit 0df009eae0
141 changed files with 7314 additions and 4044 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ func (as *Aliases) HasAlias(alias string) bool {
return false
}
// ResolveAlias by given name.
// ResolveAlias by given name. if not exists, return the alias self
func (as *Aliases) ResolveAlias(alias string) string {
if name, ok := as.mapping[alias]; ok {
return name
+16 -13
View File
@@ -12,15 +12,12 @@ import (
// LiteData simple map[string]any struct. no lock
type LiteData = Data
// NewLiteData create, not lock
// NewLiteData create, not locked
func NewLiteData(data map[string]any) *Data {
if data == nil {
data = make(map[string]any)
}
return &LiteData{
data: data,
}
return &LiteData{data: data}
}
/*************************************************************
@@ -82,7 +79,7 @@ func (d *Data) ResetData() {
// Merge load new data
func (d *Data) Merge(mp map[string]any) {
d.data = maputil.SimpleMerge(d.data, mp)
d.data = maputil.SimpleMerge(mp, d.data)
}
// Set value to data
@@ -151,21 +148,27 @@ func (d *Data) String() string {
return maputil.ToString(d.data)
}
// OrderedMap data TODO
type OrderedMap struct {
// OrderedData data TODO
type OrderedData struct {
maputil.Data
len int
cap int
keys []string
// vals []any
}
// NewOrderedMap instance.
func NewOrderedMap(len int) *OrderedMap {
return &OrderedMap{len: len}
// NewOrderedData instance.
func NewOrderedData(cap int) *OrderedData {
return &OrderedData{cap: cap, Data: make(maputil.Data, cap)}
}
// Load data
func (om *OrderedData) Load(data map[string]any) {
om.Data.Load(data)
om.keys = om.Data.Keys()
}
// Set key and value to map
func (om *OrderedMap) Set(key string, val any) {
func (om *OrderedData) Set(key string, val any) {
om.keys = append(om.keys, key)
om.Data.Set(key, val)
}
+8 -3
View File
@@ -4,7 +4,7 @@ import (
"errors"
"reflect"
"github.com/gookit/goutil/internal/comfunc"
"github.com/gookit/goutil/internal/varexpr"
"github.com/gookit/goutil/reflects"
"github.com/gookit/goutil/strutil"
)
@@ -89,7 +89,7 @@ func initDefaults(rv reflect.Value, opt *InitOptions) error {
continue
}
// skip on field has value
// Skip init on field has value. but will check slice and pointer field
if !fv.IsZero() {
// special: handle for pointer struct field
if fv.Kind() == reflect.Pointer {
@@ -140,6 +140,11 @@ func initDefaults(rv reflect.Value, opt *InitOptions) error {
// init sub struct in slice. like `[]SubStruct` or `[]*SubStruct`
if el.Kind() == reflect.Struct {
// up: if slice elem is struct and slice len=0, will be skip init default value
if fv.Len() == 0 {
continue
}
// make sub-struct and init. like: `SubStruct`
subFv := reflect.New(el)
subFvE := subFv.Elem()
@@ -174,7 +179,7 @@ func initDefaultValue(fv reflect.Value, val string, parseEnv bool) error {
// parse env var
if parseEnv {
val = comfunc.ParseEnvVar(val, nil)
val = varexpr.SafeParse(val)
}
var anyVal any = val
+2 -2
View File
@@ -1,6 +1,6 @@
package structs
// SMap simple map[string]string struct.
// SMap simple map[string]string struct. TODO
type SMap struct {
data map[string]string
data map[string]string //lint:ignore U1000 for unused
}
-1
View File
@@ -207,7 +207,6 @@ func ParseTagValueDefault(field, tagVal string) (mp maputil.SMap, err error) {
// ParseTagValueQuick quick parse tag value string by sep(;)
func ParseTagValueQuick(tagVal string, defines []string) maputil.SMap {
parseFn := ParseTagValueDefine(";", defines)
mp, _ := parseFn("", tagVal)
return mp
}
+33 -7
View File
@@ -1,14 +1,23 @@
package structs
import "reflect"
import (
"errors"
"reflect"
)
// Wrapper struct for read or set field value TODO
// Wrapper struct for read or set field value
type Wrapper struct {
// src any // source data struct
// src any // source struct
// reflect.Value of source struct
rv reflect.Value
// FieldTagName field name for read/write value. default tag: json
FieldTagName string
// caches for field rv and name and tag name TODO
fieldNames []string //lint:ignore U1000 for unused
fvCacheMap map[string]reflect.Value //lint:ignore U1000 for unused
}
// Wrap create a struct wrapper
@@ -27,11 +36,10 @@ func WrapValue(rv reflect.Value) *Wrapper {
if rv.Kind() != reflect.Struct {
panic("must be provider an struct value")
}
return &Wrapper{rv: rv}
}
// Get field value by name
// Get field value by name, name allow use dot syntax.
func (r *Wrapper) Get(name string) any {
val, ok := r.Lookup(name)
if !ok {
@@ -40,12 +48,30 @@ func (r *Wrapper) Get(name string) any {
return val
}
// Lookup field value by name
// Lookup field value by name, name allow use dot syntax.
func (r *Wrapper) Lookup(name string) (val any, ok bool) {
fv := r.rv.FieldByName(name)
if !fv.IsValid() {
return
}
return fv.Interface(), true
if fv.CanInterface() {
return fv.Interface(), true
}
return
}
// Set field value by name, name allow use dot syntax.
func (r *Wrapper) Set(name string, val any) error {
fv := r.rv.FieldByName(name)
if !fv.IsValid() {
return errors.New("field not found")
}
if !fv.CanSet() {
return errors.New("field can not set value")
}
fv.Set(reflect.ValueOf(val))
return nil
}