@@ -8,6 +8,7 @@ import jinja2
88import netaddr
99import json
1010from minigraph import parse_xml
11+ from minigraph import minigraph_encoder
1112
1213
1314def is_ipv4 (value ):
@@ -55,9 +56,9 @@ def main():
5556 group = parser .add_mutually_exclusive_group ()
5657 group .add_argument ("-t" , "--template" , help = "render the data with the template file" )
5758 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 " )
5960 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() " )
6162 group .add_argument ("--print-data" , help = "print all data" , action = 'store_true' )
6263 args = parser .parse_args ()
6364
@@ -94,10 +95,11 @@ def main():
9495 print template .render (data )
9596
9697 if args .var != None :
97- print data [args .var ]
98+ template = jinja2 .Template ('{{' + args .var + '}}' )
99+ print template .render (data )
98100
99101 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 )
101103
102104 if args .var_keys != None :
103105 for key in data [args .var_keys ].keys ():
@@ -111,7 +113,7 @@ def main():
111113 print json .dumps (mapping )
112114
113115 if args .print_data :
114- print data
116+ print json . dumps ( data , indent = 4 , cls = minigraph_encoder )
115117
116118if __name__ == "__main__" :
117119 main ()
0 commit comments