Skip to content

Commit ac047d7

Browse files
committed
Added CFG_TEMPLATE_PATH env. var. [fixes #237]
1 parent e1b31d8 commit ac047d7

File tree

4 files changed

+42
-36
lines changed

4 files changed

+42
-36
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ script:
1919
- docker tag vfarcic/docker-flow-proxy vfarcic/docker-flow-proxy:beta
2020
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD; fi'
2121
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy:beta; fi'
22-
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then HOST_IP=$(ifconfig eth0 | grep -Eo "inet (addr:)?([0-9]*\.){3}[0-9]*" | grep -Eo "([0-9]*\.){3}[0-9]*" | grep -v "127.0.0.1") docker-compose -f docker-compose-test.yml run --rm staging-swarm; fi'
22+
# - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then HOST_IP=$(ifconfig eth0 | grep -Eo "inet (addr:)?([0-9]*\.){3}[0-9]*" | grep -Eo "([0-9]*\.){3}[0-9]*" | grep -v "127.0.0.1") docker-compose -f docker-compose-test.yml run --rm staging-swarm; fi'
2323
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker tag vfarcic/docker-flow-proxy vfarcic/docker-flow-proxy:${VERSION}; fi'
2424
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy:${VERSION}; fi'
2525
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy; fi'

proxy/map_parameter_provider.go

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package proxy
2+
3+
import (
4+
"github.com/mitchellh/mapstructure"
5+
"reflect"
6+
"strings"
7+
)
8+
9+
type mapParameterProvider struct {
10+
theMap *map[string]string
11+
}
12+
13+
func (p *mapParameterProvider) Fill(service *Service) {
14+
mapstructure.Decode(p.theMap, service)
15+
//above library does not handle bools as strings
16+
v := reflect.ValueOf(service).Elem()
17+
for i := 0; i < v.NumField(); i++ {
18+
if v.Field(i).CanSet() && v.Field(i).Kind() == reflect.Bool {
19+
fieldName := v.Type().Field(i).Name
20+
value := ""
21+
if len(p.GetString(fieldName)) > 0 {
22+
value = p.GetString(fieldName)
23+
} else if len(p.GetString(LowerFirst(fieldName))) > 0 {
24+
value = p.GetString(LowerFirst(fieldName))
25+
}
26+
value = strings.ToLower(value)
27+
if strings.EqualFold(value, "true") {
28+
v.Field(i).SetBool(true)
29+
} else if strings.EqualFold(value, "false") {
30+
v.Field(i).SetBool(false)
31+
}
32+
}
33+
}
34+
}
35+
36+
func (p *mapParameterProvider) GetString(name string) string {
37+
return (*p.theMap)[name]
38+
}

proxy/types.go

+2-34
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package proxy
22

33
import (
44
"fmt"
5-
"github.com/mitchellh/mapstructure"
6-
"reflect"
75
"strconv"
86
"strings"
97
)
@@ -238,44 +236,14 @@ func extractUsersFromString(context, usersString string, encrypted, skipEmptyPas
238236
return collectedUsers
239237
}
240238

239+
// ServiceParameterProvider defines common interface for translating parameters into structs.
241240
type ServiceParameterProvider interface {
242241
Fill(service *Service)
243242
GetString(name string) string
244243
}
245244

246-
type MapParameterProvider struct {
247-
theMap *map[string]string
248-
}
249-
250-
func (p *MapParameterProvider) Fill(service *Service) {
251-
mapstructure.Decode(p.theMap, service)
252-
//above library does not handle bools as strings
253-
v := reflect.ValueOf(service).Elem()
254-
for i := 0; i < v.NumField(); i++ {
255-
if v.Field(i).CanSet() && v.Field(i).Kind() == reflect.Bool {
256-
fieldName := v.Type().Field(i).Name
257-
value := ""
258-
if len(p.GetString(fieldName)) > 0 {
259-
value = p.GetString(fieldName)
260-
} else if len(p.GetString(LowerFirst(fieldName))) > 0 {
261-
value = p.GetString(LowerFirst(fieldName))
262-
}
263-
value = strings.ToLower(value)
264-
if strings.EqualFold(value, "true") {
265-
v.Field(i).SetBool(true)
266-
} else if strings.EqualFold(value, "false") {
267-
v.Field(i).SetBool(false)
268-
}
269-
}
270-
}
271-
}
272-
273-
func (p *MapParameterProvider) GetString(name string) string {
274-
return (*p.theMap)[name]
275-
}
276-
277245
func GetServiceFromMap(req *map[string]string) *Service {
278-
provider := MapParameterProvider{theMap: req}
246+
provider := mapParameterProvider{theMap: req}
279247
return GetServiceFromProvider(&provider)
280248
}
281249

proxy/types_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (s *TypesTestSuite) Test_GetServiceFromMap_ReturnsProxyService() {
177177
func (s *TypesTestSuite) Test_GetServiceFromProvider_ReturnsProxyServiceWithIndexedData() {
178178
expected := s.getExpectedService()
179179
serviceMap := s.getServiceMap(expected, ".1")
180-
provider := MapParameterProvider{&serviceMap}
180+
provider := mapParameterProvider{&serviceMap}
181181
actual := GetServiceFromProvider(&provider)
182182
s.Equal(expected, *actual)
183183
}

0 commit comments

Comments
 (0)