Skip to content

Commit 02711ec

Browse files
Merge pull request #12 from dipdup-io/fix-env-var-expanding
Fix: expanding env vars
2 parents 45e1b69 + 4df404f commit 02711ec

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

config/parsing.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,28 @@ func expandVariables(data []byte) ([]byte, error) {
1515
// expandTransformer implements transform.Transformer
1616
type expandTransformer struct {
1717
transform.NopResetter
18+
19+
tail *bytes.Buffer
1820
}
1921

2022
func newExpandTransformer() *expandTransformer {
21-
return &expandTransformer{}
23+
return &expandTransformer{
24+
tail: new(bytes.Buffer),
25+
}
2226
}
2327

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

33+
srcLen := len(src)
34+
35+
if t.tail != nil && t.tail.Len() > 0 {
36+
src = append(t.tail.Bytes(), src...)
37+
t.tail.Reset()
38+
}
39+
2940
startIndex := bytes.Index(src, []byte{'$', '{'})
3041
for startIndex != -1 {
3142
if _, err := buf.Write(src[index : startIndex+index]); err != nil {
@@ -34,6 +45,13 @@ func (t *expandTransformer) Transform(dst, src []byte, atEOF bool) (int, int, er
3445
var name, def string
3546

3647
endIndex := bytes.Index(src[startIndex+index:], []byte{'}'})
48+
if endIndex == -1 {
49+
if _, err := t.tail.Write(src[startIndex+index:]); err != nil {
50+
return 0, 0, err
51+
}
52+
return copy(dst, buf.Bytes()), srcLen, nil
53+
}
54+
3755
separatorIndex := bytes.Index(src[startIndex+index:startIndex+index+endIndex], []byte{':', '-'})
3856
if separatorIndex == -1 {
3957
name = string(src[startIndex+index+2 : startIndex+index+endIndex])
@@ -62,5 +80,5 @@ func (t *expandTransformer) Transform(dst, src []byte, atEOF bool) (int, int, er
6280
return 0, 0, err
6381
}
6482

65-
return copy(dst, buf.Bytes()), len(src), nil
83+
return copy(dst, buf.Bytes()), srcLen, nil
6684
}

0 commit comments

Comments
 (0)