diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-06-22 22:35:21 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-06-22 22:35:21 +0200 |
commit | aa1a2ea7d03843120da50bf98584927098bcfa6d (patch) | |
tree | f4c06386efd6d97c5d6497938d9dca12a1a88386 /python/vyos/xml/generate.py | |
parent | a8ae4f46a5d0e059f2ca1181c7730b81179160f8 (diff) | |
parent | 46f4aa47cc62ca05bef4e4cca614ed77065608e7 (diff) | |
download | vyos-1x-aa1a2ea7d03843120da50bf98584927098bcfa6d.tar.gz vyos-1x-aa1a2ea7d03843120da50bf98584927098bcfa6d.zip |
Merge branch 'default-dict' of github.com:c-po/vyos-1x into current
* 'default-dict' of github.com:c-po/vyos-1x:
console-server: T2588: migrate to defaults from XML interface definitions
xml: T2588: add gitignore for generated defaults
xml: T2588: code to extract defaults values from xml
Debian: remove duplicate build dependency
xml: ssh: fix typo in service description
Diffstat (limited to 'python/vyos/xml/generate.py')
-rwxr-xr-x | python/vyos/xml/generate.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/python/vyos/xml/generate.py b/python/vyos/xml/generate.py new file mode 100755 index 000000000..dfbbadd74 --- /dev/null +++ b/python/vyos/xml/generate.py @@ -0,0 +1,70 @@ + +#!/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() |