<?xml version="1.0" encoding="UTF-8"?>

<project name="AmazonECS" default="build" basedir=".">
  <property name="build.dir" location="${basedir}/build" />

  <target name="clean">
    <!-- Clean up -->
    <delete dir="build" />

    <!-- Create build directories -->
    <mkdir dir="${build.dir}/api" />
    <mkdir dir="${build.dir}/code-browser" />
    <mkdir dir="${build.dir}/coverage" />
    <mkdir dir="${build.dir}/logs" />
    <mkdir dir="${build.dir}/pdepend" />
  </target>

  <!-- Run unit tests and generate junit.xml and clover.xml -->
  <target name="phpunit">
    <exec executable="phpunit" failonerror="true" />
  </target>

  <!-- Run pdepend, phpmd, phpcpd, and phpcs in parallel -->
  <target name="parallelTasks">
    <parallel>
      <antcall target="pdepend" />
      <antcall target="phpmd" />
      <antcall target="phpcpd" />
      <antcall target="phpcs" />
      <antcall target="phploc" />
      <!-- <antcall target="phpdoc"/> -->
    </parallel>
  </target>

  <!-- Generate pmd.xml -->
  <target name="phpmd">
    <exec executable="phpmd">
      <arg line="${basedir} xml codesize,unusedcode,naming,design
              --reportfile ${build.dir}/logs/pmd.xml
              --exclude samples" />
    </exec>
  </target>

  <!-- Generate checkstyle.xml -->
  <target name="phpcs">
    <exec executable="phpcs" output="/dev/null">
      <arg line="--report=checkstyle
              --report-file=${build.dir}/logs/checkstyle.xml
              --standard=DnsSf
              ${basedir}/lib" />
    </exec>
  </target>

  <!-- Generate jdepend.xml and software metrics charts -->
  <target name="pdepend">
    <exec executable="pdepend">
      <arg line="--jdepend-xml=${build.dir}/logs/jdepend.xml
              --jdepend-chart=${build.dir}/logs/jdepend-chart.svg
              --overview-pyramid=${build.dir}/logs/jdepend-pyramid.svg
              --ignore=samples
              ${basedir}" />
    </exec>
  </target>

  <!-- Generate pmd-cpd.xml -->
  <target name="phpcpd">
    <exec executable="phpcpd">
      <arg line="--log-pmd ${build.dir}/logs/pmd-cpd.xml
              --exclude ${basedir}/samples
              ${basedir}" />
    </exec>
  </target>

  <!-- Generate phploc.xml -->
  <target name="phploc">
    <exec executable="phploc">
      <arg line="--log-xml ${build.dir}/logs/phploc.xml
              ${basedir}/lib" />
    </exec>
  </target>

  <target name="phpcb">
    <exec executable="phpcb">
      <arg line="--log=${build.dir}/logs
              --source=${basedir}
              --output=${build.dir}/code-browser" />
    </exec>
  </target>
  <target name="build" depends="clean,parallelTasks,phpcb" />
</project>
