Skip to content

Commit

Permalink
Merge pull request #12 from dipdup-io/fix-env-var-expanding
Browse files Browse the repository at this point in the history
Fix: expanding env vars
  • Loading branch information
aopoltorzhicky authored Apr 27, 2023
2 parents 45e1b69 + 4df404f commit 02711ec
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions config/parsing.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,28 @@ func expandVariables(data []byte) ([]byte, error) {
// expandTransformer implements transform.Transformer
type expandTransformer struct {
transform.NopResetter

tail *bytes.Buffer
}

func newExpandTransformer() *expandTransformer {
return &expandTransformer{}
return &expandTransformer{
tail: new(bytes.Buffer),
}
}

// Transform -
func (t *expandTransformer) Transform(dst, src []byte, atEOF bool) (int, int, error) {
var buf bytes.Buffer
buf := new(bytes.Buffer)
var index int

srcLen := len(src)

if t.tail != nil && t.tail.Len() > 0 {
src = append(t.tail.Bytes(), src...)
t.tail.Reset()
}

startIndex := bytes.Index(src, []byte{'$', '{'})
for startIndex != -1 {
if _, err := buf.Write(src[index : startIndex+index]); err != nil {
Expand All @@ -34,6 +45,13 @@ func (t *expandTransformer) Transform(dst, src []byte, atEOF bool) (int, int, er
var name, def string

endIndex := bytes.Index(src[startIndex+index:], []byte{'}'})
if endIndex == -1 {
if _, err := t.tail.Write(src[startIndex+index:]); err != nil {
return 0, 0, err
}
return copy(dst, buf.Bytes()), srcLen, nil
}

separatorIndex := bytes.Index(src[startIndex+index:startIndex+index+endIndex], []byte{':', '-'})
if separatorIndex == -1 {
name = string(src[startIndex+index+2 : startIndex+index+endIndex])
Expand Down Expand Up @@ -62,5 +80,5 @@ func (t *expandTransformer) Transform(dst, src []byte, atEOF bool) (int, int, er
return 0, 0, err
}

return copy(dst, buf.Bytes()), len(src), nil
return copy(dst, buf.Bytes()), srcLen, nil
}

0 comments on commit 02711ec

Please sign in to comment.