Skip to content

Commit

Permalink
fix: fix reference bug (#388)
Browse files Browse the repository at this point in the history
Because

- The new reference implementation has bug when the string contain
additional `{` or `}`

This commit

- Fixes reference bug.
  • Loading branch information
donch1989 authored Feb 15, 2024
1 parent e42cf13 commit 968c0ec
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions pkg/utils/dag.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,27 +204,33 @@ func RenderInput(input any, bindings map[string]any) (any, error) {
val := ""
for {
startIdx := strings.Index(input, "${")
if startIdx == -1 {
val += input
break
}
val += input[:startIdx]
input = input[startIdx:]
endIdx := strings.Index(input, "}")
if startIdx == -1 || endIdx == -1 {
if endIdx == -1 {
val += input
break
}

ref := strings.TrimSpace(input[startIdx+2 : endIdx])
ref := strings.TrimSpace(input[2:endIdx])
v, err := traverseBinding(bindings, ref)
if err != nil {
return nil, err
}

switch v := v.(type) {
case string:
val += input[:startIdx] + v
val += v
default:
b, err := json.Marshal(v)
if err != nil {
return nil, err
}
val += input[:startIdx] + string(b)
val += string(b)
}
input = input[endIdx+1:]
}
Expand Down Expand Up @@ -591,11 +597,15 @@ func FindReferenceParent(input string) []string {
upstreams := []string{}
for {
startIdx := strings.Index(input, "${")
if startIdx == -1 {
break
}
input = input[startIdx:]
endIdx := strings.Index(input, "}")
if startIdx == -1 || endIdx == -1 {
if endIdx == -1 {
break
}
ref := strings.TrimSpace(input[startIdx+2 : endIdx])
ref := strings.TrimSpace(input[2:endIdx])
upstreams = append(upstreams, strings.Split(ref, ".")[0])
input = input[endIdx+1:]
}
Expand Down

0 comments on commit 968c0ec

Please sign in to comment.