<project name="plexi.googleauthn" default="build" basedir=".">
  <description>Google Authentication Adaptor</description>
  <tstamp/>
  <property name="src.dir" location="src"/>
  <property name="test.dir" location="test"/>
  <property name="test.class" value="*Test"/>
  <property name="build.dir" location="build"/>
  <property name="build-src.dir" location="${build.dir}/src"/>
  <property name="build-test.dir" location="${build.dir}/test"/>
  <property name="build-instrument.dir" location="${build.dir}/instrument"/>
  <property name="adaptor.clone.dir" location="lib/plexi"/>
  <!-- Used for checking if adaptor.jar has been changed. -->
  <property name="adaptor.jar.default"
    value="${adaptor.clone.dir}/build/dist/adaptor/adaptor-withlib.jar"/>
  <property name="adaptor.jar" value="${adaptor.jar.default}"/>
  <property name="dist.dir" location="dist"/>
  <property name="javadoc.dir" location="${build.dir}/javadoc"/>
  <property name="resource.dir" location="resources"/>
  <property name="lib.dir" location="lib"/>
  <property name="junit.jar" location="${lib.dir}/junit-4.8.2.jar"/>
  <property name="adaptor.class"
    value="com.google.enterprise.adaptor.googleauthn.GoogleAuthnAdaptor"/>
  <property name="adaptor.args" value=""/>
  <property name="cobertura.dir" value="${basedir}/../cobertura/"/>
  <!-- Adaptor suffix for distribution files. Useful for placing version numbers
       on our jars. -->
  <condition property="adaptor.suffix" value="-${adaptor.version}">
    <isset property="adaptor.version"/>
  </condition>
  <!-- If adaptor.version isn't set, simply use the current date. -->
  <property name="adaptor.suffix" value="-${DSTAMP}"/>
  <property name="mail.jar" value="${lib.dir}/mailapi.jar"/>

  <path id="adaptor.build.classpath">
    <fileset dir="${lib.dir}">
      <include name="gdata-client-1.0.jar"/>
      <include name="gdata-client-meta-1.0.jar"/>
      <include name="gdata-core-1.0.jar"/>
      <include name="gdata-appsforyourdomain-1.0.jar"/>
      <include name="gdata-appsforyourdomain-meta-1.0.jar"/>
      <include name="openid4java-0.9.7.jar"/>
      <include name="commons-codec-1.3.jar"/>
      <include name="guice-2.0.jar"/>
      <include name="httpclient-4.2.2.jar"/>
      <include name="httpcore-4.2.2.jar"/>
      <include name="nekohtml-1.9.14.jar"/>
    </fileset>
    <pathelement location="${mail.jar}"/>
    <pathelement location="${adaptor.jar}"/>
  </path>

  <path id="adaptor.run.classpath">
    <path refid="adaptor.build.classpath"/>
  </path>

  <path id="cobertura.classpath">
    <fileset dir="${cobertura.dir}" erroronmissingdir="false">
      <include name="cobertura.jar"/>
      <include name="lib/**/*.jar"/>
    </fileset>
  </path>

  <target name="-check-instrument-uptodate">
    <uptodate property="instrument.uptodate"
      targetfile="${build-instrument.dir}/cobertura.ser">
      <srcfiles dir="${build-src.dir}"/>
    </uptodate>
  </target>

  <target name="build"
    depends="-real-build,-check-instrument-uptodate,clean-instrument"
    description="Build source"/>

  <target name="-plexi-check-submodule">
    <condition property="plexi.is-not-submodule">
      <not>
        <equals arg1="${adaptor.jar.default}" arg2="${adaptor.jar}"/>
      </not>
    </condition>
    <condition property="tmp.plexi.valid-setup">
      <or>
        <isset property="plexi.is-not-submodule"/>
        <available file="${adaptor.clone.dir}/.git"/>
      </or>
    </condition>
    <fail unless="tmp.plexi.valid-setup">Invalid setup:
No lib/plexi submodule and using default adaptor.jar property.

You need to run "git submodule init; git submodule update" to initialize the
lib/plexi submodule or add the the command line argument
-Dadaptor.jar=path/to/adaptor-withlib.jar to point to the adaptor library.
    </fail>
  </target>

  <target name="-plexi-test-uptodate" depends="-plexi-check-submodule">
    <condition property="plexi.uptodate">
      <or>
        <isset property="plexi.is-not-submodule"/>
        <uptodate targetfile="${adaptor.jar}">
          <srcfiles dir="${adaptor.clone.dir}"
            excludes=".git/** build/** dist/** **.swp"/>
        </uptodate>
      </or>
    </condition>
  </target>

  <target name="-javamail-available-test">
    <available property="javamail.available" file="${mail.jar}"/>
  </target>

  <target name="-javamail-available-check" depends="-javamail-available-test"
    unless="javamail.available">
    <basename property="mail.jar.base" file="${mail.jar}"/>
    <dirname property="mail.jar.dir" file="${mail.jar}"/>
    <fail>Missing dependency: ${mail.jar.base} is unavailable.

You must download JavaMail, extract the necessary jar, and copy it to the lib
directory.

Library available at: http://www.oracle.com/technetwork/java/index-138643.html
Copy ${mail.jar.base} to: ${mail.jar.dir}</fail>
  </target>

  <target name="-plexi-build" depends="-plexi-test-uptodate"
    unless="plexi.uptodate">
    <echo message="Detected Plexi changes. Re-packaging Plexi..."/>
    <ant antfile="${adaptor.clone.dir}/build.xml" dir="${adaptor.clone.dir}"
      target="package" inheritAll="false">
      <property name="adaptorlib.suffix" value=""/>
    </ant>
  </target>

  <target name="-real-build" depends="-plexi-build,-javamail-available-check">
    <mkdir dir="${build-src.dir}"/>

    <javac srcdir="${src.dir}" destdir="${build-src.dir}" debug="true"
      includeantruntime="false" encoding="utf-8">
      <compilerarg value="-Xlint:unchecked"/>
      <classpath refid="adaptor.build.classpath"/>
    </javac>

    <mkdir dir="${build-test.dir}"/>
    <!-- Compile JUnit helper -->
    <javac srcdir="${lib.dir}" destdir="${build-test.dir}" debug="true"
      includeantruntime="true" encoding="utf-8">
      <compilerarg value="-Xlint:unchecked"/>
      <classpath location="${junit.jar}"/>
      <include name="JUnitLogFixFormatter.java"/>
    </javac>

    <!-- Compile tests, excluding example tests. -->
    <javac srcdir="${test.dir}" destdir="${build-test.dir}" debug="true"
      includeantruntime="false" encoding="utf-8">
      <compilerarg value="-Xlint:unchecked"/>
      <classpath refid="adaptor.build.classpath"/>
      <classpath location="${build-src.dir}"/>
      <classpath location="${junit.jar}"/>
    </javac>
  </target>

  <target name="-discover-version" unless="adaptor.version">
    <exec executable="git" outputproperty="adaptor.version"
      logError="true" failifexecutionfails="false">
      <arg value="describe"/>
      <arg value="--always"/>
    </exec>
    <!-- Set version if git describe failed. -->
    <property name="adaptor.version" value="unknown"/>
  </target>

  <target name="dist" description="Generate distribution binaries"
    depends="clean,test,package"/>

  <target name="package" description="Generate binaries"
    depends="build,javadoc,-discover-version">
    <property name="dist.staging.dir" value="${build.dir}/dist/staging"/>

    <delete dir="${build.dir}/dist"/>
    <delete dir="${dist.dir}"/>

    <mkdir dir="${build.dir}/dist"/>
    <mkdir dir="${build.dir}/dist/staging"/>
    <mkdir dir="${dist.dir}"/>

    <!-- adaptor-googleauthn.jar -->
    <!-- Concatenate dependent JARs together into a comma-delimited list. -->
    <pathconvert pathsep=" " refid="adaptor.run.classpath"
      property="tmp.adaptor.classpath">
      <mapper type="flatten"/>
      <map from="" to="lib/"/>
    </pathconvert>
    <jar destfile="${dist.staging.dir}/adaptor-googleauthn${adaptor.suffix}.jar"
      basedir="${build-src.dir}">
      <manifest>
        <attribute name="Main-Class" value="${adaptor.class}"/>
        <attribute name="Class-Path" value="${tmp.adaptor.classpath}"/>
        <section name="com/google/enterprise/adaptor/googleauthn/">
          <attribute name="Implementation-Title"
            value="Google Authentication Adaptor"/>
          <attribute name="Implementation-Vendor" value="Google Inc."/>
          <attribute name="Implementation-Version"
            value="${adaptor.version}"/>
        </section>
      </manifest>
    </jar>

    <!-- lib/ -->
    <!-- Concatenate dependent JARs together into a comma-delimited list. -->
    <pathconvert pathsep="," refid="adaptor.run.classpath"
      property="tmp.adaptor.fileset">
      <!-- We remove the lib.dir from the paths to prevent trouble with comma
           and space in lib.dir. It also makes it nicer <echo>ing
           tmp.adaptorlib.fileset. -->
      <map from="${lib.dir}/" to=""/>
    </pathconvert>
    <copy todir="${dist.staging.dir}/lib" flatten="true">
      <fileset dir="${lib.dir}" includes="${tmp.adaptor.fileset}"/>
    </copy>

    <!-- adaptor-googleauthn-withlib.jar -->
    <jar filesetmanifest="mergewithoutmain"
      destfile="${dist.staging.dir}/adaptor-googleauthn${adaptor.suffix}-withlib.jar">
      <zipfileset
        src="${dist.staging.dir}/adaptor-googleauthn${adaptor.suffix}.jar"/>
      <zipgroupfileset dir="${dist.staging.dir}/lib"/>
      <manifest>
        <attribute name="Main-Class" value="${adaptor.class}"/>
      </manifest>
    </jar>

    <!-- adaptor-bin.zip -->
    <move file="${dist.staging.dir}"
      tofile="${build.dir}/dist/adaptor-googleauthn${adaptor.suffix}"/>
    <zip destfile="${dist.dir}/adaptor-googleauthn${adaptor.suffix}-bin.zip"
      basedir="${build.dir}/dist/adaptor-googleauthn${adaptor.suffix}"/>
  </target>

  <target name="clean" description="Remove build output">
    <delete dir="${build.dir}"/>
    <delete dir="${dist.dir}"/>
  </target>

  <target name="javadoc" description="Build JavaDocs">
    <javadoc sourcepath="${src.dir}" destdir="${javadoc.dir}"
        overview="${src.dir}/overview.html">
      <classpath refid="adaptor.build.classpath"/>
      <arg value="-quiet"/>
      <arg value="-notimestamp"/>
    </javadoc>
  </target>

  <target name="run" depends="build" description="Run adaptor">
    <java classpath="${build-src.dir}" fork="true" classname="${adaptor.class}">
      <classpath refid="adaptor.run.classpath"/>
      <sysproperty key="java.util.logging.config.file"
        value="logging.properties"/>
      <sysproperty key="javax.net.ssl.keyStore" file="keys.jks"/>
      <sysproperty key="javax.net.ssl.keyStoreType" value="jks"/>
      <sysproperty key="javax.net.ssl.keyStorePassword" value="changeit"/>
      <sysproperty key="javax.net.ssl.trustStore" file="cacerts.jks"/>
      <sysproperty key="javax.net.ssl.trustStoreType" value="jks"/>
      <sysproperty key="javax.net.ssl.trustStorePassword" value="changeit"/>
      <arg line="${adaptor.args}"/>
    </java>
  </target>

  <target name="coverage" depends="instrument,test,coverage-report"
    description="Run instrumented tests and generate coverage report"/>

  <target name="test" depends="build" description="Run JUnit tests">
    <junit printsummary="yes" haltonfailure="yes" forkmode="once" fork="true"
      dir="${basedir}" maxmemory="512m">
      <sysproperty key="net.sourceforge.cobertura.datafile"
        file="${build-instrument.dir}/cobertura.ser"/>
      <classpath refid="adaptor.run.classpath"/>
      <classpath refid="cobertura.classpath"/>
      <classpath location="${junit.jar}"/>
      <classpath location="${build-instrument.dir}"/>
      <classpath location="${build-src.dir}"/>
      <classpath location="${build-test.dir}"/>
      <formatter type="plain" usefile="false"/>
      <formatter classname="JUnitLogFixFormatter" usefile="false"/>
      <batchtest>
        <fileset dir="${test.dir}">
          <include name="**/${test.class}.java"/>
        </fileset>
      </batchtest>
    </junit>
  </target>

  <target name="instrument" depends="build" description="Instrument classes">
    <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
    <cobertura-instrument datafile="${build-instrument.dir}/cobertura.ser"
      todir="${build-instrument.dir}">
      <fileset dir="${build-src.dir}"/>
    </cobertura-instrument>
  </target>

  <target name="clean-instrument" unless="instrument.uptodate"
    description="Delete instrumented classes">
    <delete dir="${build-instrument.dir}"/>
  </target>

  <target name="coverage-report" description="Generates code coverage report">
    <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
    <cobertura-report datafile="${build-instrument.dir}/cobertura.ser"
      srcdir="${src.dir}" destdir="${build.dir}/coverage"/>
  </target>
</project>
