Skip to content

Commit 2be1328

Browse files
committed
feat: Add wildcard support for services name
Signed-off-by: Suleiman Dibirov <[email protected]>
1 parent f2c7981 commit 2be1328

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

types/project.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,25 @@ func (p *Project) getServicesByNames(names ...string) (Services, []string) {
188188
if len(names) == 0 {
189189
return p.Services, nil
190190
}
191+
191192
services := Services{}
192193
var servicesNotFound []string
193194
for _, name := range names {
194-
service, ok := p.Services[name]
195-
if !ok {
195+
matched := false
196+
197+
for serviceName, service := range p.Services {
198+
match, _ := filepath.Match(name, serviceName)
199+
if match {
200+
services[serviceName] = service
201+
matched = true
202+
}
203+
}
204+
205+
if !matched {
196206
servicesNotFound = append(servicesNotFound, name)
197-
continue
198207
}
199-
services[name] = service
200208
}
209+
201210
return services, servicesNotFound
202211
}
203212

types/project_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
_ "crypto/sha256"
2121
"errors"
2222
"fmt"
23+
"sort"
2324
"strings"
2425
"testing"
2526

@@ -158,6 +159,12 @@ func makeProject() *Project {
158159
Name: "service_6",
159160
Links: []string{"service_1"},
160161
},
162+
"my_services_1": ServiceConfig{
163+
Name: "service_6",
164+
},
165+
"my_services_2": ServiceConfig{
166+
Name: "service_6",
167+
},
161168
},
162169
Networks: Networks{},
163170
Volumes: Volumes{},
@@ -281,6 +288,18 @@ func TestWithServices(t *testing.T) {
281288
assert.DeepEqual(t, seen, []string{"service_1", "service_2", "service_4"})
282289
}
283290

291+
func TestWithServicesWithWildcard(t *testing.T) {
292+
p := makeProject()
293+
var seen []string
294+
err := p.ForEachService([]string{"my_services_*"}, func(name string, _ *ServiceConfig) error {
295+
seen = append(seen, name)
296+
return nil
297+
}, IgnoreDependencies)
298+
assert.NilError(t, err)
299+
sort.Strings(seen)
300+
assert.DeepEqual(t, seen, []string{"my_services_1", "my_services_2"})
301+
}
302+
284303
func TestServicesWithBuild(t *testing.T) {
285304
p := makeProject()
286305
assert.DeepEqual(t, []string{}, p.ServicesWithBuild())

0 commit comments

Comments
 (0)