Merge pull request #1451 from michelleN/set-types

fix(helm): correctly convert types on --set flag
pull/1457/head
Michelle Noorali 8 years ago committed by GitHub
commit 7b58f21cc8

@ -24,6 +24,7 @@ import (
"io/ioutil"
"os"
"path/filepath"
"strconv"
"strings"
"text/template"
@ -289,12 +290,32 @@ func (v *values) Set(data string) error {
return nil
}
func typedVal(val string) interface{} {
if strings.EqualFold(val, "true") {
return true
}
if strings.EqualFold(val, "false") {
return false
}
if iv, err := strconv.ParseInt(val, 10, 64); err == nil {
return iv
}
if fv, err := strconv.ParseFloat(val, 64); err == nil {
return fv
}
return val
}
func splitPair(item string) (name string, value interface{}) {
pair := strings.SplitN(item, "=", 2)
if len(pair) == 1 {
return pair[0], true
}
return pair[0], pair[1]
return pair[0], typedVal(pair[1])
}
// locateChartPath looks for a chart directory in known places, and returns either the full path or an error.

@ -100,7 +100,7 @@ func TestInstall(t *testing.T) {
}
func TestValues(t *testing.T) {
args := "sailor=sinbad,good,port.source=baghdad,port.destination=basrah"
args := "sailor=sinbad,good,port.source=baghdad,port.destination=basrah,success=True"
vobj := new(values)
vobj.Set(args)
@ -113,6 +113,10 @@ func TestValues(t *testing.T) {
t.Errorf("Expected good to be true. Got %v", vals["good"])
}
if !vals["success"].(bool) {
t.Errorf("Expected boolean true. Got %T, %v", vals["success"], vals["success"])
}
port := vals["port"].(map[string]interface{})
if fmt.Sprint(port["source"]) != "baghdad" {
@ -127,6 +131,7 @@ port:
destination: basrah
source: baghdad
sailor: sinbad
success: true
`
out, err := vobj.yaml()
if err != nil {
@ -147,6 +152,7 @@ port:
destination: basrah
source: baghdad
sailor: pisti
success: true
`
newOut, err := vobj.yaml()
if err != nil {

Loading…
Cancel
Save