Added path normalization in `- set` directive. (#404)

Fixes #399
This commit is contained in:
Anatoly Rugalev 2018-11-28 01:13:04 +03:00 committed by KUOKA Yusuke
parent d898dfbd0d
commit 971cbcf1db
1 changed files with 12 additions and 8 deletions

View File

@ -933,6 +933,15 @@ func (state *HelmState) JoinBase(relPath string) string {
return filepath.Join(state.basePath, relPath) return filepath.Join(state.basePath, relPath)
} }
// normalizes relative path to absolute one
func (state *HelmState) normalizePath(path string) string {
if filepath.IsAbs(path) {
return path
} else {
return state.JoinBase(path)
}
}
// normalizeChart allows for the distinction between a file path reference and repository references. // normalizeChart allows for the distinction between a file path reference and repository references.
// - Any single (or double character) followed by a `/` will be considered a local file reference and // - Any single (or double character) followed by a `/` will be considered a local file reference and
// be constructed relative to the `base path`. // be constructed relative to the `base path`.
@ -1054,12 +1063,7 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release
for _, value := range release.Values { for _, value := range release.Values {
switch typedValue := value.(type) { switch typedValue := value.(type) {
case string: case string:
var path string path := state.normalizePath(typedValue)
if filepath.IsAbs(typedValue) {
path = typedValue
} else {
path = filepath.Join(state.basePath, typedValue)
}
if _, err := os.Stat(path); os.IsNotExist(err) { if _, err := os.Stat(path); os.IsNotExist(err) {
return nil, err return nil, err
} }
@ -1097,7 +1101,7 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release
} }
} }
for _, value := range release.Secrets { for _, value := range release.Secrets {
path := filepath.Join(state.basePath, value) path := state.normalizePath(value)
if _, err := os.Stat(path); os.IsNotExist(err) { if _, err := os.Stat(path); os.IsNotExist(err) {
return nil, err return nil, err
} }
@ -1115,7 +1119,7 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release
if set.Value != "" { if set.Value != "" {
flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value))) flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value)))
} else if set.File != "" { } else if set.File != "" {
flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), set.File)) flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), state.normalizePath(set.File)))
} else if len(set.Values) > 0 { } else if len(set.Values) > 0 {
items := make([]string, len(set.Values)) items := make([]string, len(set.Values))
for i, raw := range set.Values { for i, raw := range set.Values {