mirror of
https://github.com/kubescape/kubescape.git
synced 2026-02-14 18:09:55 +00:00
78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"strings"
|
|
|
|
"github.com/kubescape/go-logger"
|
|
"github.com/kubescape/kubescape/v3/core/meta"
|
|
metav1 "github.com/kubescape/kubescape/v3/core/meta/datastructures/v1"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func getSetCmd(ks meta.IKubescape) *cobra.Command {
|
|
|
|
// configCmd represents the config command
|
|
configSetCmd := &cobra.Command{
|
|
Use: "set",
|
|
Short: fmt.Sprintf("Set configurations, supported: %s", strings.Join(stringKeysToSlice(supportConfigSet), "/")),
|
|
Example: setConfigExample,
|
|
ValidArgs: stringKeysToSlice(supportConfigSet),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
setConfig, err := parseSetArgs(args)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := ks.SetCachedConfig(setConfig); err != nil {
|
|
logger.L().Fatal(err.Error())
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
return configSetCmd
|
|
}
|
|
|
|
var supportConfigSet = map[string]func(*metav1.SetConfig, string){
|
|
"accessKey": func(s *metav1.SetConfig, accessKey string) { s.AccessKey = accessKey },
|
|
"accountID": func(s *metav1.SetConfig, account string) { s.Account = account },
|
|
"cloudAPIURL": func(s *metav1.SetConfig, cloudAPIURL string) { s.CloudAPIURL = cloudAPIURL },
|
|
"cloudReportURL": func(s *metav1.SetConfig, cloudReportURL string) { s.CloudReportURL = cloudReportURL },
|
|
}
|
|
|
|
func stringKeysToSlice(m map[string]func(*metav1.SetConfig, string)) []string {
|
|
keys := []string{}
|
|
for key := range m {
|
|
keys = append(keys, key)
|
|
}
|
|
|
|
// Sort the keys of the map
|
|
sort.Strings(keys)
|
|
|
|
l := []string{}
|
|
l = append(l, keys...)
|
|
return l
|
|
}
|
|
|
|
func parseSetArgs(args []string) (*metav1.SetConfig, error) {
|
|
var key string
|
|
var value string
|
|
if len(args) == 1 {
|
|
if keyValue := strings.Split(args[0], "="); len(keyValue) == 2 {
|
|
key = keyValue[0]
|
|
value = keyValue[1]
|
|
}
|
|
} else if len(args) == 2 {
|
|
key = args[0]
|
|
value = args[1]
|
|
}
|
|
setConfig := &metav1.SetConfig{}
|
|
|
|
if setConfigFunc, ok := supportConfigSet[key]; ok {
|
|
setConfigFunc(setConfig, value)
|
|
} else {
|
|
return setConfig, fmt.Errorf("key '%s' unknown . supported: %s", key, strings.Join(stringKeysToSlice(supportConfigSet), "/"))
|
|
}
|
|
return setConfig, nil
|
|
}
|