feat(cli): add config settings registry
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// settingDef describes a configurable global setting for `config list`/`set`.
|
||||
type settingDef struct {
|
||||
desc string
|
||||
validate func(string) error
|
||||
}
|
||||
|
||||
// settingsRegistry is the authoritative set of valid config keys. `config set`
|
||||
// rejects keys absent here; `config list` enumerates them.
|
||||
var settingsRegistry = map[string]settingDef{
|
||||
"audit_retention_days": {
|
||||
desc: "Days to keep audit-log entries (integer >= 0)",
|
||||
validate: func(v string) error {
|
||||
n, err := strconv.Atoi(v)
|
||||
if err != nil || n < 0 {
|
||||
return fmt.Errorf("must be an integer >= 0, got %q", v)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// settingKeys returns the registry keys in stable sorted order.
|
||||
func settingKeys() []string {
|
||||
ks := make([]string, 0, len(settingsRegistry))
|
||||
for k := range settingsRegistry {
|
||||
ks = append(ks, k)
|
||||
}
|
||||
sort.Strings(ks)
|
||||
return ks
|
||||
}
|
||||
Reference in New Issue
Block a user