39 lines
890 B
Go
39 lines
890 B
Go
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
|
|
}
|