#!/usr/bin/env python3 # Copyright (C) 2020 VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or modify it under the terms of # the GNU Lesser General Public License as published by the Free Software Foundation; # either version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License along with this library; # if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import os import sys import pprint import argparse from vyos.xml import kw from vyos.xml import load # import json # def save_json(fname, loaded): # with open(fname, 'w') as w: # print(f'saving {fname}') # w.write(json.dumps(loaded)) def save_dict(fname, loaded): with open(fname, 'w') as w: print(f'saving {fname}') w.write(f'# generated by {__file__}\n\n') w.write('definition = ') w.write(str(loaded)) def main(): parser = argparse.ArgumentParser(description='generate python file from xml defintions') parser.add_argument('--conf-folder', type=str, default=load.configuration_definition, help='XML interface definition folder') parser.add_argument('--conf-cache', type=str, default=load.configuration_cache, help='python file with the conf mode dict') # parser.add_argument('--op-folder', type=str, default=load.operational_definition, help='XML interface definition folder') # parser.add_argument('--op-cache', type=str, default=load.operational_cache, help='python file with the conf mode dict') parser.add_argument('--dry', action='store_true', help='dry run, print to screen') args = parser.parse_args() if os.path.exists(load.configuration_cache): os.remove(load.configuration_cache) # if os.path.exists(load.operational_cache): # os.remove(load.operational_cache) conf = load.xml(args.conf_folder) # op = load.xml(args.op_folder) if args.dry: pprint.pprint(conf) return save_dict(args.conf_cache, conf) # save_dict(args.op_cache, op) if __name__ == '__main__': main()