Files
kubescape/core/cautils/strutils.go
Amir Malka ea3172eda6 time-based cached policies
Signed-off-by: Amir Malka <amirm@armosec.io>
2023-07-10 10:54:56 +03:00

77 lines
1.4 KiB
Go

package cautils
import (
"fmt"
"os"
"sort"
"strconv"
"strings"
)
const ValueNotFound = -1
func ConvertLabelsToString(labels map[string]string) string {
labelsStr := ""
delimiter := ""
for k, v := range labels {
labelsStr += fmt.Sprintf("%s%s=%s", delimiter, k, v)
delimiter = ";"
}
return labelsStr
}
// ConvertStringToLabels convert a string "a=b;c=d" to map: {"a":"b", "c":"d"}
func ConvertStringToLabels(labelsStr string) map[string]string {
labels := make(map[string]string)
labelsSlice := strings.Split(labelsStr, ";")
if len(labelsSlice)%2 != 0 {
return labels
}
for i := range labelsSlice {
kvSlice := strings.Split(labelsSlice[i], "=")
if len(kvSlice) != 2 {
continue
}
labels[kvSlice[0]] = kvSlice[1]
}
return labels
}
func StringInSlice(strSlice []string, str string) int {
for i := range strSlice {
if strSlice[i] == str {
return i
}
}
return ValueNotFound
}
func StringSlicesAreEqual(a, b []string) bool {
if len(a) != len(b) {
return false
}
sort.Strings(a)
sort.Strings(b)
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
func ParseIntEnvVar(varName string, defaultValue int) (int, error) {
varValue, exists := os.LookupEnv(varName)
if !exists {
return defaultValue, nil
}
intValue, err := strconv.Atoi(varValue)
if err != nil {
return defaultValue, fmt.Errorf("failed to parse %s env var as int: %w", varName, err)
}
return intValue, nil
}