@@ -101,19 +101,32 @@ func main() {
101101 }
102102
103103 ctx := map [string ]interface {}{}
104+
104105 if load_env {
105106 for _ , e := range os .Environ () {
106- pair := strings .Split (e , "=" )
107- ctx [pair [0 ]] = dfl .TryConvertString (pair [1 ])
107+ pair := strings .SplitN (e , "=" , 2 )
108+ ctx [strings . TrimSpace ( pair [0 ]) ] = dfl .TryConvertString (strings . TrimSpace ( pair [1 ]) )
108109 }
109110 }
111+
110112 for _ , a := range flag .Args () {
111113 if ! strings .Contains (a , "=" ) {
112114 fmt .Println ("Context attribute \" " + a + "\" does not contain \" =\" ." )
113115 os .Exit (1 )
114116 }
115117 pair := strings .SplitN (a , "=" , 2 )
116- ctx [pair [0 ]] = dfl .TryConvertString (pair [1 ])
118+ value , err := dfl .Parse (strings .TrimSpace (pair [1 ]))
119+ if err != nil {
120+ fmt .Println (errors .Wrap (err , "Could not parse context variable" ))
121+ os .Exit (1 )
122+ }
123+ value = value .Compile ()
124+ switch value .(type ) {
125+ case dfl.Literal :
126+ ctx [strings .TrimSpace (pair [0 ])] = value .(dfl.Literal ).Value
127+ default :
128+ ctx [strings .TrimSpace (pair [0 ])] = dfl .TryConvertString (pair [1 ])
129+ }
117130 }
118131
119132 root , err := dfl .Parse (filter_text )
@@ -123,6 +136,17 @@ func main() {
123136 os .Exit (1 )
124137 }
125138
139+ if verbose {
140+ fmt .Println ("******************* Context *******************" )
141+ out , err := yaml .Marshal (ctx )
142+ if err != nil {
143+ fmt .Println ("Error marshaling context to yaml." )
144+ fmt .Println (err )
145+ os .Exit (1 )
146+ }
147+ fmt .Println (string (out ))
148+ }
149+
126150 if verbose {
127151 fmt .Println ("******************* Parsed *******************" )
128152 out , err := yaml .Marshal (root .Map ())
0 commit comments