#!/usr/bin/env python3
"""
Tool to help with driver multi-version operations
To generate json format output of DMV
To select specific variant
"""

import argparse
import sys
import errno
import json

from xcp.dmv import DriverMultiVersionManager

def main():
    """Main function to parse argument and call functions"""
    parser = argparse.ArgumentParser(
        description='Handling multi-version driver\
                                     operations.')
    parser.add_argument('-l', action="store_true",
                        help='List all available multi-version drivers')
    parser.add_argument('-s', action="store_true", help='Select module')
    parser.add_argument('-n', type=str, help='Module name')
    parser.add_argument('-v', type=str, help='Module variant')

    args = parser.parse_args()

    dmvmgr = DriverMultiVersionManager(True)

    if args.l:
        dmvmgr.parse_dmv_list()
        dmv_list = dmvmgr.get_dmv_list()
        json.dump(dmv_list, sys.stdout, indent=4)
        sys.exit(0)
    if args.s:
        if args.n and args.v:
            ret = dmvmgr.create_dmv_symlink(args.n, args.v)
            if not ret:
                json.dump(dmvmgr.get_dmv_error(), sys.stdout, indent=4)
                sys.exit(1)
            sys.exit(0)
        else:
            dmvmgr.set_dmv_error(errno.ENOEXEC)
            json.dump(dmvmgr.get_dmv_error(), sys.stdout, indent=4)
            sys.exit(1)

    dmvmgr.set_dmv_error(errno.EINVAL)
    json.dump(dmvmgr.get_dmv_error(), sys.stderr, indent=4)
    sys.exit(1)


# Main body
if __name__ == '__main__':
    main()
