diff --git a/pkg/compose/helper.go b/pkg/compose/helper.go index ff97305ec..47ec9aed9 100644 --- a/pkg/compose/helper.go +++ b/pkg/compose/helper.go @@ -371,13 +371,18 @@ func (h *ComposeHelper) SanitizeProjectName(name string) string { return h.toProjectName(name) } +var ( + oldProjectNameRegex = regexp.MustCompile("[^a-z0-9]") + newProjectNameRegex = regexp.MustCompile("[^-_a-z0-9]") +) + func (h *ComposeHelper) toProjectName(projectName string) string { useNewProjectNameFormat, _ := h.useNewProjectName() if !useNewProjectNameFormat { - return regexp.MustCompile("[^a-z0-9]").ReplaceAllString(strings.ToLower(projectName), "") + return oldProjectNameRegex.ReplaceAllString(strings.ToLower(projectName), "") } - return regexp.MustCompile("[^-_a-z0-9]").ReplaceAllString(strings.ToLower(projectName), "") + return newProjectNameRegex.ReplaceAllString(strings.ToLower(projectName), "") } func (h *ComposeHelper) buildCmd(ctx context.Context, args ...string) *exec.Cmd { diff --git a/pkg/compose/helper_bench_test.go b/pkg/compose/helper_bench_test.go new file mode 100644 index 000000000..afaa07f30 --- /dev/null +++ b/pkg/compose/helper_bench_test.go @@ -0,0 +1,27 @@ +package compose + +import ( + "testing" +) + +func BenchmarkToProjectName(b *testing.B) { + helper := &ComposeHelper{ + Version: "1.29.2", // Old version format + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + helper.toProjectName("My_Project-Name") + } +} + +func BenchmarkToProjectName_NewFormat(b *testing.B) { + helper := &ComposeHelper{ + Version: "2.0.0", // New version format + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + helper.toProjectName("My_Project-Name") + } +}