<?xml version="1.0" encoding="UTF-8"?>
<project name="libphonenumber-for-php" default="test">

    <property name="build.script" value="build/build.php"/>

    <property name="git.url" value="https://github.com/googlei18n/libphonenumber.git"/>
    <property name="git.path" value="libphonenumber-data-dir"/>

    <property name="data.testCoreData" value="Tests/libphonenumber/Tests/core/data/"/>
    <property name="data.testPrefixMapperData" value="Tests/libphonenumber/Tests/prefixmapper/data/"/>
    <property name="data.testCarrierData" value="Tests/libphonenumber/Tests/carrier/data/"/>
    <property name="data.testTimezoneData" value="Tests/libphonenumber/Tests/timezone/data/"/>

    <property name="data.coreData" value="src/libphonenumber/data/"/>
    <property name="data.carrierData" value="src/libphonenumber/carrier/data/"/>
    <property name="data.geocodingData" value="src/libphonenumber/geocoding/data/"/>
    <property name="data.timezoneData" value="src/libphonenumber/timezone/data/"/>


    <target name="test" description="Run unit tests" depends="compile-test-data">
        <exec passthru="true" command="vendor/bin/phpunit"/>
    </target>

    <target name="compile-test-data" description="Build Test Data"
            depends="cleanup-test-data,build-test-metadata,build-geo-test-data,build-carrier-test-data,build-timezones-test-data">
    </target>

    <target name="compile" description="Build all Data"
            depends="cleanup-data,compile-test-data,build-phone-metadata,build-short-metadata,build-alternate-metadata,build-carrier-data,build-timezones-data,build-geo-data">
    </target>

    <target name="cleanup-test-data" description="Cleanup old built test data"
            depends="delete-test-carrierdata,delete-test-prefixmapper,delete-test-coredata,delete-test-timezone"/>

    <target name="cleanup-data" description="Cleanup built data"
            depends="cleanup-test-data,delete-coredata,delete-carrierdata,delete-geocoding,delete-timezone"/>

    <target name="delete-test-coredata">
        <delete dir="${data.testCoreData}"/>
        <mkdir dir="${data.testCoreData}"/>
    </target>

    <target name="delete-test-carrierdata">
        <delete dir="${data.testCarrierData}"/>
        <mkdir dir="${data.testCarrierData}"/>
    </target>

    <target name="delete-test-prefixmapper">
        <delete dir="${data.testPrefixMapperData}"/>
        <mkdir dir="${data.testPrefixMapperData}"/>
    </target>

    <target name="delete-test-timezone">
        <delete dir="${data.testTimezoneData}"/>
        <mkdir dir="${data.testTimezoneData}"/>
    </target>

    <target name="delete-coredata">
        <delete dir="${data.coreData}"/>
        <mkdir dir="${data.coreData}"/>
    </target>

    <target name="delete-carrierdata">
        <delete dir="${data.carrierData}"/>
        <mkdir dir="${data.carrierData}"/>
    </target>

    <target name="delete-geocoding">
        <delete dir="${data.geocodingData}"/>
        <mkdir dir="${data.geocodingData}"/>
    </target>

    <target name="delete-timezone">
        <delete dir="${data.timezoneData}"/>
        <mkdir dir="${data.timezoneData}"/>
    </target>

    <target name="git-pull">
        <delete dir="${git.path}"/>
        <exec executable="git" passthru="true" checkreturn="true">
            <arg value="clone"/>
            <arg value="${git.url}"/>
            <arg value="${git.path}"/>
        </exec>
    </target>

    <target name="build-test-metadata" description="Build test Phone Metadata" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="BuildMetadataPHPFromXML"/>
            <arg value="${git.path}/resources/PhoneNumberMetadataForTesting.xml"/>
            <arg value="${data.testCoreData}"/>
            <arg value="PhoneNumberMetadataForTesting"/>
            <arg value="CountryCodeToRegionCodeMapForTesting"/>
            <arg value="src/libphonenumber/"/>
            <arg value="false"/>
        </exec>
    </target>

    <target name="build-geo-test-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GeneratePhonePrefixData"/>
            <arg value="${git.path}/resources/test/geocoding/"/>
            <arg value="${data.testPrefixMapperData}"/>
        </exec>
    </target>

    <target name="build-carrier-test-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GeneratePhonePrefixData"/>
            <arg value="${git.path}/resources/test/carrier/"/>
            <arg value="${data.testCarrierData}"/>
        </exec>
    </target>


    <target name="build-phone-metadata" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="BuildMetadataPHPFromXML"/>
            <arg value="${git.path}/resources/PhoneNumberMetadata.xml"/>
            <arg value="${data.coreData}"/>
            <arg value="PhoneNumberMetadata"/>
            <arg value="CountryCodeToRegionCodeMap"/>
            <arg value="src/libphonenumber/"/>
            <arg value="false"/>
        </exec>
    </target>

    <target name="build-short-metadata" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="BuildMetadataPHPFromXML"/>
            <arg value="${git.path}/resources/ShortNumberMetadata.xml"/>
            <arg value="${data.coreData}"/>
            <arg value="ShortNumberMetadata"/>
            <arg value="ShortNumbersRegionCodeSet"/>
            <arg value="src/libphonenumber/"/>
            <arg value="false"/>
        </exec>
    </target>

    <target name="build-alternate-metadata" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="BuildMetadataPHPFromXML"/>
            <arg value="${git.path}/resources/PhoneNumberAlternateFormats.xml"/>
            <arg value="${data.coreData}"/>
            <arg value="PhoneNumberAlternateFormats"/>
            <arg value="AlternateFormatsCountryCodeSet"/>
            <arg value="src/libphonenumber/"/>
            <arg value="false"/>
        </exec>
    </target>

    <target name="build-carrier-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GeneratePhonePrefixData"/>
            <arg value="${git.path}/resources/carrier/"/>
            <arg value="${data.carrierData}"/>
        </exec>
    </target>

    <target name="build-geo-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GeneratePhonePrefixData"/>
            <arg value="${git.path}/resources/geocoding/"/>
            <arg value="${data.geocodingData}"/>
        </exec>
    </target>

    <target name="build-timezones-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GenerateTimeZonesMapData"/>
            <arg value="${git.path}/resources/timezones/map_data.txt"/>
            <arg value="${data.timezoneData}"/>
        </exec>
    </target>

    <target name="build-timezones-test-data" depends="git-pull">
        <exec executable="${build.script}" passthru="true">
            <arg value="GenerateTimeZonesMapData"/>
            <arg value="${git.path}/resources/test/timezones/map_data.txt"/>
            <arg value="${data.testTimezoneData}"/>
        </exec>
    </target>

</project>
