#!/usr/bin/env python3

import configparser
import sys
import argparse

from ipxact2systemverilog.ipxact2hdlCommon import ipxactParser
from ipxact2systemverilog.ipxact2hdlCommon import ipxact2otherGenerator
from ipxact2systemverilog.ipxact2hdlCommon import rstAddressBlock
from ipxact2systemverilog.ipxact2hdlCommon import DEFAULT_INI
from ipxact2systemverilog.validate import validate

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='ipxact2rst')
    parser.add_argument('-s', '--srcFile', help='ipxact xml input file', required=True)
    parser.add_argument('-d', '--destDir', help="write generated file to dir", required=True)
    parser.add_argument('-c', '--config', help="configuration ini file")

    args, unknown_args = parser.parse_known_args()

    if not validate(args.srcFile):
        print("%s doesn't validate" % args.srcFile)
        sys.exit(1)

    config = configparser.ConfigParser()
    if args.config:
        config.read(args.config)
    else:
        config.read_dict(DEFAULT_INI)

    e = ipxactParser(args.srcFile, config)
    document = e.returnDocument()
    generator = ipxact2otherGenerator(args.destDir)
    generator.generate(rstAddressBlock, document)
