Skip to content

Commit 12baf42

Browse files
authored
Merge pull request #197 from ndeloof/project_name_with_dots
2 parents 2d2e1dc + fb6434f commit 12baf42

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

cli/options.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ func ProjectFromOptions(options *ProjectOptions) (*types.Project, error) {
335335
} else {
336336
opts.Name = filepath.Base(absWorkingDir)
337337
}
338-
opts.Name = regexp.MustCompile(`(?m)[a-z0-9]+[-_a-z0-9]*`).FindString(strings.ToLower(opts.Name))
338+
opts.Name = normalizeName(opts.Name)
339339
}
340340
options.loadOptions = append(options.loadOptions, nameLoadOpt)
341341

@@ -352,6 +352,13 @@ func ProjectFromOptions(options *ProjectOptions) (*types.Project, error) {
352352
return project, nil
353353
}
354354

355+
func normalizeName(s string) string {
356+
r := regexp.MustCompile("[a-z0-9_-]")
357+
s = strings.ToLower(s)
358+
s = strings.Join(r.FindAllString(s, -1), "")
359+
return strings.TrimLeft(s, "_-")
360+
}
361+
355362
// getConfigPathsFromOptions retrieves the config files for project based on project options
356363
func getConfigPathsFromOptions(options *ProjectOptions) ([]string, error) {
357364
if len(options.ConfigPaths) != 0 {

cli/options_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,22 @@ func TestProjectName(t *testing.T) {
8282
assert.Equal(t, p.Name, "my_project")
8383
})
8484

85+
t.Run("by name contains dots", func(t *testing.T) {
86+
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithName("www.my.project"))
87+
assert.NilError(t, err)
88+
p, err := ProjectFromOptions(opts)
89+
assert.NilError(t, err)
90+
assert.Equal(t, p.Name, "wwwmyproject")
91+
})
92+
93+
t.Run("by name uppercase", func(t *testing.T) {
94+
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithName("MY_PROJECT"))
95+
assert.NilError(t, err)
96+
p, err := ProjectFromOptions(opts)
97+
assert.NilError(t, err)
98+
assert.Equal(t, p.Name, "my_project")
99+
})
100+
85101
t.Run("by working dir", func(t *testing.T) {
86102
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithWorkingDirectory("."))
87103
assert.NilError(t, err)

0 commit comments

Comments
 (0)