v0.37.0 lwconf live and fixes
Package / arch (push) Canceled after 0s
Package / user (push) Canceled after 0s
Package / deb (push) Canceled after 0s
Package / freebsd (push) Canceled after 0s
Package / image (push) Canceled after 0s
Test / test (push) Canceled after 0s
Test / e2e (push) Canceled after 0s
Package / arch (push) Canceled after 0s
Package / user (push) Canceled after 0s
Package / deb (push) Canceled after 0s
Package / freebsd (push) Canceled after 0s
Package / image (push) Canceled after 0s
Test / test (push) Canceled after 0s
Test / e2e (push) Canceled after 0s
This commit is contained in:
1 parent
a63b512733
commit
24c3eb1d6e
13 files changed
+97
-48
No files matched your search
@@ -138,7 +138,7 @@ const (
|
||||
type FilterConfig struct {
|
||||
Type FilterType `toml:"type" default:"include" lw:"enum=include|exclude" help:"pass only matching entries, or drop them"`
|
||||
Logic FilterLogic `toml:"logic" default:"or" lw:"enum=or|and" help:"match any pattern, or all"`
|
||||
Patterns []string `toml:"patterns,omitempty" lw:"hint=regex" help:"RE2 patterns"`
|
||||
Patterns []string `toml:"patterns,omitempty" lw:"required,hint=regex" help:"RE2 patterns"`
|
||||
}
|
||||
|
||||
// --- Sources ---
|
||||
|
||||
@@ -370,15 +370,15 @@ func setDefault(f reflect.Value, o option) {
|
||||
}
|
||||
|
||||
// checkTags applies the tag rules to a table's own keys, naming each by
|
||||
// prefix and key. A zero number is the default or its zero meaning, and
|
||||
// meets the range unless required; an empty enum is one only by its zero
|
||||
// or default.
|
||||
// prefix and key. A required list needs an entry. A zero number is the
|
||||
// default or its zero meaning, and meets the range unless required; an empty
|
||||
// enum is one only by its zero or default.
|
||||
func checkTags(v reflect.Value, prefix string) error {
|
||||
for _, o := range options(v.Type()) {
|
||||
f := v.Field(o.index)
|
||||
var err error
|
||||
switch {
|
||||
case o.Required && (f.IsZero() || f.Kind() == reflect.String && strings.TrimSpace(f.String()) == ""):
|
||||
case o.Required && (f.IsZero() || f.Kind() == reflect.String && strings.TrimSpace(f.String()) == "" || f.Kind() == reflect.Slice && f.Len() == 0):
|
||||
err = errors.New("must be set")
|
||||
case f.Kind() == reflect.String && len(o.Enum) > 0 && (f.String() != "" || o.Zero == "" && o.Default == "") && !slices.Contains(o.Enum, f.String()):
|
||||
err = fmt.Errorf("must be one of %s, got %q", strings.Join(o.Enum, ", "), f.String())
|
||||
|
||||
@@ -26,7 +26,7 @@ func TestEveryRowDecodesFromItsRequiredKeys(t *testing.T) {
|
||||
t.Errorf("%s %s from %v: %v", p.Type, p.Role, m, err)
|
||||
}
|
||||
}
|
||||
for _, stage := range []any{&HeartbeatConfig{}, &RateLimitConfig{}, &FormatConfig{}, &FilterConfig{}} {
|
||||
for _, stage := range []any{&HeartbeatConfig{}, &RateLimitConfig{}, &FormatConfig{}, &FilterConfig{Patterns: []string{"1"}}} {
|
||||
if err := Settle(stage); err != nil {
|
||||
t.Errorf("%T: %v", stage, err)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user