@@ -8,6 +8,7 @@ import jinja2
8
8
import netaddr
9
9
import json
10
10
from minigraph import parse_xml
11
+ from minigraph import minigraph_encoder
11
12
12
13
13
14
def is_ipv4 (value ):
@@ -55,9 +56,9 @@ def main():
55
56
group = parser .add_mutually_exclusive_group ()
56
57
group .add_argument ("-t" , "--template" , help = "render the data with the template file" )
57
58
group .add_argument ("-s" , "--alias-mapping" , help = "print alias mapping json if available" , action = 'store_true' )
58
- group .add_argument ("-v" , "--var" , help = "print the value of a variable" )
59
+ group .add_argument ("-v" , "--var" , help = "print the value of a variable, support jinja2 expression " )
59
60
group .add_argument ("--var-json" , help = "print the value of a variable, in json format" )
60
- group .add_argument ("--var-keys" , help = "print all keys of a map variable" )
61
+ group .add_argument ("--var-keys" , help = "print all keys of a map variable - to be deprecated, use -v and keys() " )
61
62
group .add_argument ("--print-data" , help = "print all data" , action = 'store_true' )
62
63
args = parser .parse_args ()
63
64
@@ -94,10 +95,11 @@ def main():
94
95
print template .render (data )
95
96
96
97
if args .var != None :
97
- print data [args .var ]
98
+ template = jinja2 .Template ('{{' + args .var + '}}' )
99
+ print template .render (data )
98
100
99
101
if args .var_json != None :
100
- print json .dumps (data [args .var_json ])
102
+ print json .dumps (data [args .var_json ], indent = 4 , cls = minigraph_encoder )
101
103
102
104
if args .var_keys != None :
103
105
for key in data [args .var_keys ].keys ():
@@ -111,7 +113,7 @@ def main():
111
113
print json .dumps (mapping )
112
114
113
115
if args .print_data :
114
- print data
116
+ print json . dumps ( data , indent = 4 , cls = minigraph_encoder )
115
117
116
118
if __name__ == "__main__" :
117
119
main ()
0 commit comments