Skip to content

Commit

Permalink
Added CFG_TEMPLATE_PATH env. var. [fixes #237]
Browse files Browse the repository at this point in the history
  • Loading branch information
vfarcic committed May 16, 2017
1 parent e1b31d8 commit ac047d7
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ script:
- docker tag vfarcic/docker-flow-proxy vfarcic/docker-flow-proxy:beta
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD; fi'
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy:beta; fi'
- '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'
# - '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'
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker tag vfarcic/docker-flow-proxy vfarcic/docker-flow-proxy:${VERSION}; fi'
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy:${VERSION}; fi'
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker push vfarcic/docker-flow-proxy; fi'
Expand Down
38 changes: 38 additions & 0 deletions proxy/map_parameter_provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package proxy

import (
"github.com/mitchellh/mapstructure"
"reflect"
"strings"
)

type mapParameterProvider struct {
theMap *map[string]string
}

func (p *mapParameterProvider) Fill(service *Service) {
mapstructure.Decode(p.theMap, service)
//above library does not handle bools as strings
v := reflect.ValueOf(service).Elem()
for i := 0; i < v.NumField(); i++ {
if v.Field(i).CanSet() && v.Field(i).Kind() == reflect.Bool {
fieldName := v.Type().Field(i).Name
value := ""
if len(p.GetString(fieldName)) > 0 {
value = p.GetString(fieldName)
} else if len(p.GetString(LowerFirst(fieldName))) > 0 {
value = p.GetString(LowerFirst(fieldName))
}
value = strings.ToLower(value)
if strings.EqualFold(value, "true") {
v.Field(i).SetBool(true)
} else if strings.EqualFold(value, "false") {
v.Field(i).SetBool(false)
}
}
}
}

func (p *mapParameterProvider) GetString(name string) string {
return (*p.theMap)[name]
}
36 changes: 2 additions & 34 deletions proxy/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package proxy

import (
"fmt"
"github.com/mitchellh/mapstructure"
"reflect"
"strconv"
"strings"
)
Expand Down Expand Up @@ -238,44 +236,14 @@ func extractUsersFromString(context, usersString string, encrypted, skipEmptyPas
return collectedUsers
}

// ServiceParameterProvider defines common interface for translating parameters into structs.
type ServiceParameterProvider interface {
Fill(service *Service)
GetString(name string) string
}

type MapParameterProvider struct {
theMap *map[string]string
}

func (p *MapParameterProvider) Fill(service *Service) {
mapstructure.Decode(p.theMap, service)
//above library does not handle bools as strings
v := reflect.ValueOf(service).Elem()
for i := 0; i < v.NumField(); i++ {
if v.Field(i).CanSet() && v.Field(i).Kind() == reflect.Bool {
fieldName := v.Type().Field(i).Name
value := ""
if len(p.GetString(fieldName)) > 0 {
value = p.GetString(fieldName)
} else if len(p.GetString(LowerFirst(fieldName))) > 0 {
value = p.GetString(LowerFirst(fieldName))
}
value = strings.ToLower(value)
if strings.EqualFold(value, "true") {
v.Field(i).SetBool(true)
} else if strings.EqualFold(value, "false") {
v.Field(i).SetBool(false)
}
}
}
}

func (p *MapParameterProvider) GetString(name string) string {
return (*p.theMap)[name]
}

func GetServiceFromMap(req *map[string]string) *Service {
provider := MapParameterProvider{theMap: req}
provider := mapParameterProvider{theMap: req}
return GetServiceFromProvider(&provider)
}

Expand Down
2 changes: 1 addition & 1 deletion proxy/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ func (s *TypesTestSuite) Test_GetServiceFromMap_ReturnsProxyService() {
func (s *TypesTestSuite) Test_GetServiceFromProvider_ReturnsProxyServiceWithIndexedData() {
expected := s.getExpectedService()
serviceMap := s.getServiceMap(expected, ".1")
provider := MapParameterProvider{&serviceMap}
provider := mapParameterProvider{&serviceMap}
actual := GetServiceFromProvider(&provider)
s.Equal(expected, *actual)
}
Expand Down

0 comments on commit ac047d7

Please sign in to comment.