commit 52ece3b099c774a4d3f070d47b7f35c1d348bb1b
parent 6cb6ee62da2c019ab2150f5571a13686869419dc
Author: Sean Enck <sean@ttypty.com>
Date: Thu, 20 Feb 2025 18:39:52 -0500
gopls suggestions
Diffstat:
4 files changed, 19 insertions(+), 28 deletions(-)
diff --git a/internal/app/completions/core_test.go b/internal/app/completions/core_test.go
@@ -2,6 +2,7 @@ package completions_test
import (
"fmt"
+ "slices"
"sort"
"strings"
"testing"
@@ -39,14 +40,7 @@ func TestConditionals(t *testing.T) {
case "LOCKBOX_CREDENTIALS_PASSWORD_MODE":
value = "ask"
}
- found := false
- for _, f := range fields {
- if fmt.Sprintf(`[ "$%s" != "%s" ]`, n, value) == f {
- found = true
- break
- }
- }
- if !found {
+ if !slices.Contains(fields, fmt.Sprintf(`[ "$%s" != "%s" ]`, n, value)) {
t.Errorf("needed conditional %s not found: %v", n, fields)
}
}
diff --git a/internal/config/store/core.go b/internal/config/store/core.go
@@ -16,7 +16,7 @@ type (
// KeyValue are values exportable for interrogation beyond the store
KeyValue struct {
Key string
- Value interface{}
+ Value any
}
)
diff --git a/internal/config/toml.go b/internal/config/toml.go
@@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"io"
+ "maps"
"os"
"path/filepath"
"sort"
@@ -134,15 +135,13 @@ func generateDetailText(data printer) (string, error) {
// LoadConfig will read the input reader and use the loader to source configuration files
func LoadConfig(r io.Reader, loader Loader) error {
- maps, err := readConfigs(r, 1, loader)
+ mapped, err := readConfigs(r, 1, loader)
if err != nil {
return err
}
- m := make(map[string]interface{})
- for _, config := range maps {
- for k, v := range flatten(config, "") {
- m[k] = v
- }
+ m := make(map[string]any)
+ for _, config := range mapped {
+ maps.Copy(m, flatten(config, ""))
}
for k, v := range m {
export := environmentPrefix + strings.ToUpper(k)
@@ -191,16 +190,16 @@ func LoadConfig(r io.Reader, loader Loader) error {
return nil
}
-func readConfigs(r io.Reader, depth int, loader Loader) ([]map[string]interface{}, error) {
+func readConfigs(r io.Reader, depth int, loader Loader) ([]map[string]any, error) {
if depth > maxDepth {
return nil, fmt.Errorf("too many nested includes (%d > %d)", depth, maxDepth)
}
d := toml.NewDecoder(r)
- m := make(map[string]interface{})
+ m := make(map[string]any)
if _, err := d.Decode(&m); err != nil {
return nil, err
}
- maps := []map[string]interface{}{m}
+ maps := []map[string]any{m}
includes, ok := m[isInclude]
if ok {
delete(m, isInclude)
@@ -235,10 +234,10 @@ func readConfigs(r io.Reader, depth int, loader Loader) ([]map[string]interface{
return maps, nil
}
-func parseStringArray(value interface{}, expand bool) ([]string, error) {
+func parseStringArray(value any, expand bool) ([]string, error) {
var res []string
switch t := value.(type) {
- case []interface{}:
+ case []any:
for _, item := range t {
switch s := item.(type) {
case string:
@@ -257,8 +256,8 @@ func parseStringArray(value interface{}, expand bool) ([]string, error) {
return res, nil
}
-func flatten(m map[string]interface{}, prefix string) map[string]interface{} {
- flattened := make(map[string]interface{})
+func flatten(m map[string]any, prefix string) map[string]any {
+ flattened := make(map[string]any)
for k, v := range m {
key := k
@@ -267,10 +266,8 @@ func flatten(m map[string]interface{}, prefix string) map[string]interface{} {
}
switch to := v.(type) {
- case map[string]interface{}:
- for subKey, subVal := range flatten(to, key) {
- flattened[subKey] = subVal
- }
+ case map[string]any:
+ maps.Copy(flattened, flatten(to, key))
default:
flattened[key] = v
}
diff --git a/internal/util/reflect.go b/internal/util/reflect.go
@@ -11,7 +11,7 @@ import (
func ListFields(p any) []string {
v := reflect.ValueOf(p)
var vals []string
- for i := 0; i < v.NumField(); i++ {
+ for i := range v.NumField() {
vals = append(vals, fmt.Sprintf("%v", v.Field(i).Interface()))
}
sort.Strings(vals)
@@ -20,7 +20,7 @@ func ListFields(p any) []string {
func readNested(v reflect.Type, root string) []string {
var fields []string
- for i := 0; i < v.NumField(); i++ {
+ for i := range v.NumField() {
field := v.Field(i)
if field.Type.Kind() == reflect.Struct {
fields = append(fields, readNested(field.Type, fmt.Sprintf("%s.", field.Name))...)