diff options
Diffstat (limited to 'cmd/kpod/create_cli.go')
-rw-r--r-- | cmd/kpod/create_cli.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/kpod/create_cli.go b/cmd/kpod/create_cli.go new file mode 100644 index 000000000..996155ba0 --- /dev/null +++ b/cmd/kpod/create_cli.go @@ -0,0 +1,52 @@ +package main + +import ( + "strings" + + "github.com/pkg/errors" + "github.com/urfave/cli" +) + +func getAllLabels(cli *cli.Context) (map[string]string, error) { + var labelValues []string + labels := make(map[string]string) + labelValues, labelErr := readKVStrings(cli.StringSlice("label-file"), cli.StringSlice("label")) + if labelErr != nil { + return labels, errors.Wrapf(labelErr, "unable to process labels from --label and label-file") + } + // Process KEY=VALUE stringslice in string map for WithLabels func + if len(labelValues) > 0 { + for _, i := range labelValues { + spliti := strings.Split(i, "=") + if len(spliti) > 1 { + return labels, errors.Errorf("labels must be in KEY=VALUE format: %s is invalid", i) + } + labels[spliti[0]] = spliti[1] + } + } + return labels, nil +} + +func getAllEnvironmentVariables(cli *cli.Context) ([]string, error) { + env, err := readKVStrings(cli.StringSlice("env-file"), cli.StringSlice("env")) + if err != nil { + return []string{}, errors.Wrapf(err, "unable to process variables from --env and --env-file") + } + // Add default environment variables if nothing defined + if len(env) == 0 { + env = append(env, defaultEnvVariables...) + } + return env, nil +} + +func convertStringSliceToMap(strSlice []string, delimiter string) (map[string]string, error) { + sysctl := make(map[string]string) + for _, inputSysctl := range strSlice { + values := strings.Split(inputSysctl, delimiter) + if len(values) < 2 { + return sysctl, errors.Errorf("%s in an invalid sysctl value", inputSysctl) + } + sysctl[values[0]] = values[1] + } + return sysctl, nil +} |