#!/usr/bin/env python3
from lxml import etree
import sys
import os

"""
    Parse XML and use xpath to retrieves data
"""
def parse_xml(filename: str = "", xpath: str = "") -> list:
    with open(filename, "rb") as xml:
        tree = etree.fromstring(
            text = xml.read()
        )
    return tree.xpath(xpath)

"""
    AssetMap > Id
"""
def assetmap_id(filename: str = ""):
    xpath = "/*[local-name()='AssetMap']/*[local-name()='Id']/text()"
    return parse_xml(filename, xpath)

"""
    AssetMap > Asset > Id
"""
def assetmap_asset_id(filename: str = ""):
    xpath = "//*[local-name()='Asset']/*[local-name()='Id']/text()"
    return parse_xml(filename, xpath)

"""
    AssetMap > Asset > Path
"""
def assetmap_asset_path(filename: str = ""):
    xpath = "//*[local-name()='Path']/text()"
    return parse_xml(filename, xpath)


if __name__ == '__main__':

    if len(sys.argv) <= 1:
        print("usage: %s <ASSETMAP>" % sys.argv[0])
        sys.exit(254)
    else:
        if not os.path.exists(sys.argv[1]):
            print("%s not found" % sys.argv[1])
            sys.exit(253)
        else:
            FILENAME=sys.argv[1]

    print("AssetMap Id = {assetmap_id}".format(
        assetmap_id = ', '.join(assetmap_id(FILENAME))
    ))
    print("AssetMap Asset Id = {assetmap_asset_id}".format(
        assetmap_asset_id = ', '.join(assetmap_asset_id(FILENAME))
    ))
    print("AssetMap Asset Path = {assetmap_asset_path}".format(
        assetmap_asset_path = ', '.join(assetmap_asset_path(FILENAME))
    ))

