import sys
import os
import os.path
from SimpleConfigParser import SimpleConfigParser
import packaging.nvda
import packaging.windows
import packaging.android

Import("env")
local_env=env.Clone()

for dir_name in ["languages","voices"]:
    type=dir_name[:-1]
    dir=Dir(dir_name).srcnode()
    for subdir_name in os.listdir(dir.abspath):
        subdir=dir.Dir(subdir_name)
        data_files=[subdir.File(name) for name in os.listdir(subdir.abspath)]
        cp=SimpleConfigParser()
        cp.read(subdir.File(type+".info").abspath)
        props=dict((name,cp.getoption(name)) for name in cp.getoptionslist())
        if type=="language":
            props["language"]=props["name"]
        props["type"]=type
        version="{format}.{revision}".format(**props)
        name_format_string="RHVoice-voice-{language}-{name}" if type=="voice" else "RHVoice-language-{name}"
        name=name_format_string.format(**props)
        description_format_string="{name} - {language} voice for RHVoice" if type=="voice" else "{name} language pack for RHVoice"
        description=description_format_string.format(**props)
        if sys.platform!="win32":
            local_env.InstallData(data_files,os.path.join(dir_name,subdir_name))
        packagers=dict()
        if sys.platform=="win32":
            pkgdir=Dir("..").Dir("packages")
            packagers["nvda"]=packaging.nvda.addon_packager(name,pkgdir.Dir("nvda"),local_env,name,description,description,version)
            packagers["nvda"].add(data_files,"data")
            packagers["sapi"]=packaging.windows.app_packager(name,pkgdir.Dir("sapi"),local_env,description,version,True)
            packagers["sapi"].add(data_files,r"data\{type}s\{name}".format(**props))
        packagers["android"]=packaging.android.data_packager(props["name"],Dir("android"),local_env,props["language"],props["format"],props["revision"])
        packagers["android"].add(data_files)
        for p in packagers.itervalues():
            p.package()
