From 751a2facdbea29d882a5d37f9c2f950b717cc6c8 Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Fri, 20 Sep 2024 16:56:15 -0600 Subject: [PATCH] Minor changes to util functions --- pkg/util/params.go | 19 ++++++++++++++++--- pkg/util/util.go | 11 +++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/pkg/util/params.go b/pkg/util/params.go index 6b342cd..322d852 100644 --- a/pkg/util/params.go +++ b/pkg/util/params.go @@ -11,7 +11,7 @@ type Params map[string]any type Option func(Params) // Extract all parameters from the options passed as map[string]any. -func GetParams(opts ...Option) Params { +func ToDict(opts ...Option) Params { params := Params{} for _, opt := range opts { opt(params) @@ -45,8 +45,8 @@ func WithDefault[T any](v T) Option { } } -// Syntactic sugar generic function to get parameter from util.Params. -func Get[T any](params Params, key string, opts ...Option) *T { +// Sugary generic function to get parameter from util.Params. +func Get[T any](params Params, key string) *T { if v, ok := params[key].(T); ok { return &v } @@ -55,3 +55,16 @@ func Get[T any](params Params, key string, opts ...Option) *T { } return nil } + +func GetOpt[T any](opts []Option, key string) *T { + return Get[T](ToDict(opts...), "required_claims") +} + +func (p Params) GetVerbose() bool { + if verbose, ok := p["verbose"].(bool); ok { + return verbose + } + + // default setting + return false +} diff --git a/pkg/util/util.go b/pkg/util/util.go index fd0daa2..fc53b67 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -2,12 +2,14 @@ package util import ( "bytes" + "cmp" "crypto/tls" "fmt" "io" "net/http" "os" "os/exec" + "slices" "strings" ) @@ -28,7 +30,7 @@ func IsDirectory(path string) (bool, error) { // This returns an *os.FileInfo type fileInfo, err := os.Stat(path) if err != nil { - return false, fmt.Errorf("failed to stat path: %v", err) + return false, fmt.Errorf("failed to stat path (%s): %v", path, err) } // IsDir is short for fileInfo.Mode().IsDir() @@ -63,7 +65,7 @@ func MakeRequest(url string, httpMethod string, body []byte, headers map[string] // NOTE: This currently requires git to be installed. // TODO: Change how this is done to not require executing a command. func GitCommit() string { - c := exec.Command("git", "rev-parse", "HEAD") + c := exec.Command("git", "rev-parse", "--short=8", "HEAD") stdout, err := c.Output() if err != nil { return "" @@ -80,6 +82,11 @@ func RemoveIndex[T comparable](s []T, index int) []T { return append(ret, s[index+1:]...) } +func RemoveDuplicates[T cmp.Ordered](s []T) []T { + slices.Sort(s) + return slices.Compact(s) +} + // General function to copy elements from slice if condition is true. func CopyIf[T comparable](s []T, condition func(t T) bool) []T { var f = make([]T, 0)