Skip to content

Commit b9ec8c9

Browse files
committed
Create application command
1 parent e7f7c58 commit b9ec8c9

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

application/commands/application/create_app_cmd.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package application
22

33
import (
4-
"slices"
5-
64
pluginsCommon "github.com/jfrog/jfrog-cli-core/v2/plugins/common"
75

86
"github.com/jfrog/jfrog-cli-application/application/commands/utils"
@@ -11,7 +9,6 @@ import (
119
commonCLiCommands "github.com/jfrog/jfrog-cli-core/v2/common/commands"
1210
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
1311
coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
14-
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
1512
"github.com/jfrog/jfrog-client-go/utils/errorutils"
1613

1714
"github.com/jfrog/jfrog-cli-application/application/app"
@@ -56,20 +53,24 @@ func (cac *createAppCommand) buildRequestPayload(ctx *components.Context) (*mode
5653
return nil, errorutils.CheckErrorf("--%s is mandatory", commands.ProjectFlag)
5754
}
5855

59-
businessCriticality := ctx.GetStringFlagValue(commands.BusinessCriticalityFlag)
60-
if businessCriticality == "" {
61-
// Default to "unspecified" if not provided
62-
businessCriticality = model.BusinessCriticalityUnspecified
63-
} else if !slices.Contains(model.BusinessCriticalityValues, businessCriticality) {
64-
return nil, errorutils.CheckErrorf("invalid value for --%s: '%s'. Allowed values: %s", commands.BusinessCriticalityFlag, businessCriticality, coreutils.ListToText(model.BusinessCriticalityValues))
56+
businessCriticalityStr := ctx.GetStringFlagValue(commands.BusinessCriticalityFlag)
57+
businessCriticality, err := utils.ValidateEnumFlag(
58+
commands.BusinessCriticalityFlag,
59+
businessCriticalityStr,
60+
model.BusinessCriticalityUnspecified,
61+
model.BusinessCriticalityValues)
62+
if err != nil {
63+
return nil, err
6564
}
6665

67-
maturityLevel := ctx.GetStringFlagValue(commands.MaturityLevelFlag)
68-
if maturityLevel == "" {
69-
// Default to "unspecified" if not provided
70-
maturityLevel = model.MaturityLevelUnspecified
71-
} else if !slices.Contains(model.MaturityLevelValues, maturityLevel) {
72-
return nil, errorutils.CheckErrorf("invalid value for --%s: '%s'. Allowed values: %s", commands.MaturityLevelFlag, maturityLevel, coreutils.ListToText(model.MaturityLevelValues))
66+
maturityLevelStr := ctx.GetStringFlagValue(commands.MaturityLevelFlag)
67+
maturityLevel, err := utils.ValidateEnumFlag(
68+
commands.MaturityLevelFlag,
69+
maturityLevelStr,
70+
model.MaturityLevelUnspecified,
71+
model.MaturityLevelValues)
72+
if err != nil {
73+
return nil, err
7374
}
7475

7576
description := ctx.GetStringFlagValue(commands.DescriptionFlag)

application/commands/utils/utils.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package utils
22

33
import (
44
"fmt"
5+
"slices"
56
"strings"
67

78
commonCliUtils "github.com/jfrog/jfrog-cli-core/v2/common/cliutils"
89
pluginsCommon "github.com/jfrog/jfrog-cli-core/v2/plugins/common"
910
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
1011
coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
12+
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
1113
"github.com/jfrog/jfrog-client-go/utils/errorutils"
1214
)
1315

@@ -63,3 +65,19 @@ func ParseMapFlag(flagValue string) (map[string]string, error) {
6365
}
6466
return result, nil
6567
}
68+
69+
// ValidateEnumFlag validates that a flag value is in the list of allowed values.
70+
// If the value is empty, returns the default value.
71+
// Otherwise, returns an error if the value is not in the allowed values.
72+
func ValidateEnumFlag(flagName, value string, defaultValue string, allowedValues []string) (string, error) {
73+
if value == "" {
74+
return defaultValue, nil
75+
}
76+
77+
if slices.Contains(allowedValues, value) {
78+
return value, nil
79+
}
80+
81+
return "", errorutils.CheckErrorf("invalid value for --%s: '%s'. Allowed values: %s",
82+
flagName, value, coreutils.ListToText(allowedValues))
83+
}

0 commit comments

Comments
 (0)