import sys, string, os
from xml.etree import ElementTree as ET
from xml.dom import minidom

classPathFile = sys.argv[1]
pluginStr = sys.argv[2]
pluginsDir = sys.argv[3]

def getLibElement(pathAttr):
    ret = ET.Element('classpathentry')
    ret.set('exported', 'true')
    ret.set('kind', 'lib')
    ret.set('path', pathAttr)
    return ret

def fomatTree(elem):
    root_str = ET.tostring(elem, 'UTF-8')
    reparse = minidom.parseString(root_str)
    return reparse

tree = ET.parse(classPathFile)
root = tree.getroot()
entryNodes = root.findall('classpathentry')
linkedLibs = []
for node in entryNodes:
    entryKind = node.get('kind')
    entryPath = node.get('path')
    entryKind = entryKind.strip(' \n\r\t')
    entryPath = entryPath.strip(' \n\r\t')
    if entryKind == 'lib' and entryPath.endswith('.jar'):
        linkedLibs.append(entryPath)

plugins = pluginStr.split(':')
modified = False
for pluginName in plugins:
    pluginAndroidDir = pluginsDir + '/' + pluginName + '/android'
    
    for fileName in os.listdir(pluginAndroidDir):
        if os.path.splitext(fileName)[1] == '.jar':
            needAdd = True
            for linkedJar in linkedLibs:
                if -1 != linkedJar.find(fileName):
                    needAdd = False
                    break
            
            if needAdd:
                modified = True
                pathAttr = 'plugin-x/' + pluginName + '/android/' + fileName
                root.append(getLibElement(pathAttr))
                linkedLibs.append(pathAttr)

if modified:
    f = open(classPathFile, 'w')
    fomatDom = fomatTree(root)
    fomatDom.writexml(f, '', '\t', '\n', 'UTF-8')
    f.close()
