Skip to content

Commit 50d16f8

Browse files
authored
Add validators for package and datastream names (#1433)
Add validators when creating a new package or a new data stream to check whether or not the package name or data stream have valid values according to the spec.
1 parent 1ce805e commit 50d16f8

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

cmd/create_data_stream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func createDataStreamCommandAction(cmd *cobra.Command, args []string) error {
5656
Message: "Data stream name:",
5757
Default: "new_data_stream",
5858
},
59-
Validate: survey.ComposeValidators(survey.Required, surveyext.DataStreamDoesNotExistValidator),
59+
Validate: survey.ComposeValidators(survey.Required, surveyext.DataStreamDoesNotExistValidator, surveyext.DataStreamNameValidator),
6060
},
6161
{
6262
Name: "title",

cmd/create_package.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func createPackageCommandAction(cmd *cobra.Command, args []string) error {
6767
Message: "Package name:",
6868
Default: "new_package",
6969
},
70-
Validate: survey.ComposeValidators(survey.Required, surveyext.PackageDoesNotExistValidator),
70+
Validate: survey.ComposeValidators(survey.Required, surveyext.PackageDoesNotExistValidator, surveyext.PackageNameValidator),
7171
},
7272
{
7373
Name: "version",

internal/surveyext/validators.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import (
1616

1717
var (
1818
githubOwnerRegexp = regexp.MustCompile(`^(([a-zA-Z0-9-]+)|([a-zA-Z0-9-]+\/[a-zA-Z0-9-]+))$`)
19+
20+
packageNameRegexp = regexp.MustCompile(`^[a-z0-9_]+$`)
21+
dataStreamNameRegexp = regexp.MustCompile(`^([a-z0-9]{2}|[a-z0-9][a-z0-9_]+[a-z0-9])$`)
1922
)
2023

2124
// PackageDoesNotExistValidator function checks if the package hasn't been already created.
@@ -84,3 +87,27 @@ func GithubOwnerValidator(val interface{}) error {
8487
}
8588
return nil
8689
}
90+
91+
func PackageNameValidator(val interface{}) error {
92+
packageName, ok := val.(string)
93+
if !ok {
94+
return errors.New("string type expected")
95+
}
96+
97+
if !packageNameRegexp.MatchString(packageName) {
98+
return fmt.Errorf("value doesn't match the regular expression (package name): %s", packageNameRegexp.String())
99+
}
100+
return nil
101+
}
102+
103+
func DataStreamNameValidator(val interface{}) error {
104+
dataStreamFolderName, ok := val.(string)
105+
if !ok {
106+
return errors.New("string type expected")
107+
}
108+
109+
if !dataStreamNameRegexp.MatchString(dataStreamFolderName) {
110+
return fmt.Errorf("value doesn't match the regular expression (datastream name): %s", dataStreamNameRegexp.String())
111+
}
112+
return nil
113+
}

0 commit comments

Comments
 (0)