<?xml version="1.0" encoding="UTF-8"?>
<project name="Pilotix" default="usage" basedir=".">

  <description>Compilation de Pilotix</description>

  <tstamp>
    <format property="ANNEE_EN_COURS" pattern="yyyy"/>
  </tstamp>

  <!-- Propriétés globales -->
  <property name="jaroj" value="2003-${ANNEE_EN_COURS}"/>
  <property name="src" location="src"/>
  <property name="class" location="class"/>
  <property name="dist" location="dist"/>
  <property name="data" location="data"/>
  <property name="properties" location="properties"/>
  <property name="docs" location="docs"/>
  <property name="javadoc" location="${docs}/javadoc"/>

  <!-- Logo -->
  <target name="logo">
    <echo message="                     _"/>
    <echo message="_______________     /o\     _______________"/>
    <echo message="\___________ * \___/   \___/ * ___________/"/>
    <echo message="    \_______\_____Pilotix_____/_______/"/>
    <echo message="        \_______/  \_ _/  \_______/"/>
    <echo message="            \##/           \##/"/>
  </target>

  <target name="autres-logos">
    <echo message="                      _"/>
    <echo message="_______________      /o\      _______________"/>
    <echo message="\__________  * \____/   \____/ *  __________/"/>
    <echo message="    \_______   *   Pilotix   *   _______/"/>
    <echo message="            \___ * /\_ _/\ * ___/"/>
    <echo message="               \##/       \##/"/>
    <echo message=""/>
    <echo message="               _"/>
    <echo message="              /o\"/>
    <echo message="/\___________/   \___________/\"/>
    <echo message="\/--:---:-- Pilotix --:---:--\/"/>
    <echo message="    *   * \ /\_ _/\ / *   *"/>
    <echo message="           O       O"/>
    <echo message=""/>
  </target>

  <!-- Initialisation -->
  <target name="init" depends="logo">
    <mkdir dir="${class}"/>
  </target>

  <!-- ClassPath -->
  <path id="classpath.path">
    <pathelement path="${classpath}"/>
    <pathelement location="/usr/lib/jvm/java-6-sun/lib/ext/vecmath.jar"/>
    <pathelement location="/usr/lib/jvm/java-6-sun/lib/ext/j3dcore.jar"/>
    <pathelement location="/usr/lib/jvm/java-6-sun/lib/ext/j3dutils.jar"/>
  </path>

  <!-- Compilation -->
  <target name="compile" depends="init" description="Compiler le code source">
    <javac srcdir="${src}"
            destdir="${class}"
            encoding="ISO-8859-1"
            optimize="yes"
            debug="yes"
            deprecation="yes">
      <compilerarg value="-Xlint"/>
      <classpath>
        <path refid="classpath.path"/>
      </classpath>
    </javac>
  </target>

  <!-- Archives -->
  <target name="dist" depends="compile" description="Générer une distribution">
    <mkdir dir="${dist}"/>
    <jar jarfile="${dist}/PilotixClient.jar">
      <fileset dir="${class}" includes="org/pilotix/client/**"/>
      <fileset dir="." includes="properties/*Client*"/>
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name="Main-Class" value="org.pilotix.client.PilotixClient"/>
        <attribute name="Class-Path" value="PilotixCommon.jar PilotixData.jar"/>
      </manifest>
    </jar>
    <jar jarfile="${dist}/PilotixCommon.jar">
      <fileset dir="${class}" includes="org/pilotix/common/**"/>
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
      </manifest>
    </jar>
    <jar jarfile="${dist}/PilotixServer.jar">
      <fileset dir="${class}" includes="org/pilotix/server/**"/>
      <fileset dir="." includes="properties/*Server*"/>
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name="Main-Class" value="org.pilotix.server.PilotixServer"/>
        <attribute name="Class-Path" value="PilotixCommon.jar PilotixData.jar"/>
      </manifest>
    </jar>
    <jar jarfile="${dist}/PilotixData.jar">
      <fileset dir="${data}"/>
      <manifest>
        <attribute name="Built-By" value="${user.name}"/>
      </manifest>
    </jar>
  </target>

  <!-- Signer les archives -->
  <target name="signature" depends="dist" description="Signer les archives JAR">
    <signjar jar="${dist}/PilotixClient.jar" alias="pilotix.org" keystore="./pilotix.org.key" storepass="public" />
    <signjar jar="${dist}/PilotixCommon.jar" alias="pilotix.org" keystore="./pilotix.org.key" storepass="public" />
    <signjar jar="${dist}/PilotixData.jar" alias="pilotix.org" keystore="./pilotix.org.key" storepass="public" />
    <signjar jar="${dist}/PilotixServer.jar" alias="pilotix.org" keystore="./pilotix.org.key" storepass="public" />
  </target>

  <!-- Documentation -->
  <target name="javadoc" depends="logo" description="Générer la documentation">
    <javadoc packagenames="*"
             sourcepath="${src}"
             destdir="${javadoc}"
             author="true"
             version="true"
             use="true"
             encoding="ISO-8859-1"
             docencoding="ISO-8859-1"
             charset="ISO-8859-1"
             windowtitle="Pilotix : documentation"
             stylesheetfile="../../include/css/std-screen.css"
             nodeprecatedlist="true">
      <doctitle>Pilotix : documentation (${DSTAMP})</doctitle>
      <bottom><![CDATA[<em><a href="http://pilotix.berlios.de/" target="_top"><img src="http://pilotix.berlios.de/include/images/logopilotix-petit-avec-fleche.png" alt="pilotix.berlios.de" title="http://pilotix.berlios.de"></a> Pilotix.org ${jaroj} - Stilisto : G.C.</em>]]></bottom>
      <tag name=".todo" scope="all" description="À faire&#160;:" />
      <classpath>
        <path refid="classpath.path"/>
      </classpath>
    </javadoc>
  </target>

  <!-- Lance le client à partir du Jar -->
  <target name="client" description="Lancer le client à partir du Jar">
    <java jar="${dist}/PilotixClient.jar" fork="true">
      <sysproperty key="pilotix.data.path" value="data"/>
    </java>
  </target>

  <!-- Lance le client sans utiliser le JAR -->
  <target name="clientnojar" depends="compile" description="Lancer le client sans utiliser le Jar">
    <java classname="org.pilotix.client.PilotixClient" fork="true">
      <classpath>
        <pathelement location="${class}"/>
        <pathelement location="."/>
      </classpath>
      <sysproperty key="pilotix.data.path" value="data"/>
    </java>
  </target>

  <!-- Ajoute un joueur machine -->
  <target name="robot" description="Ajouter un joueur machine">
    <java classname="org.pilotix.client.ClientTest" fork="true">
      <arg value="localhost"/>
      <arg value="9000"/>
      <classpath>
        <pathelement location="${class}"/>
        <pathelement location="."/>
      </classpath>
    </java>
  </target>

  <!-- Lance le serveur à partir du Jar -->
  <target name="server" description="Lancer le serveur à partir du Jar">
    <java jar="${dist}/PilotixServer.jar" fork="true">
      <arg value="gui"/>
      <sysproperty key="pilotix.data.path" value="data"/>
    </java>
  </target>

  <!-- Lance le serveur sans utiliser le Jar -->
  <target name="servernojar" depends="compile" description="Lancer le serveur sans utiliser le Jar">
    <java classname="org.pilotix.server.PilotixServer" fork="true">
      <!--<arg value="gui"/>-->
      <classpath>
        <pathelement location="${class}"/>
        <pathelement location="."/>
      </classpath>
      <sysproperty key="pilotix.data.path" value="data"/>
    </java>
  </target>

  <!-- Nettoyage -->
  <target name="clean" description="Nettoyer l'arborescence">
    <delete dir="${class}"/>
    <delete dir="${dist}"/>
  </target>

  <!-- Nettoyage complet -->
  <target name="clean-all" depends="clean" description="Nettoyer l'arborescence et la javadoc">
    <delete dir="${javadoc}"/>
  </target>

  <!-- Usage -->
  <target name="usage">
    <echo message="*** Pilotix - script ANT ***"/>
    <echo message="Usage : "/>
    <echo message="   ant &lt;option&gt;"/>
    <echo message=""/>
    <echo message="   &lt;option&gt; : "/>
    <echo message="            server      : Lance un serveur à partir du Jar"/>
    <echo message="            servernojar : Lance un serveur sans utiliser le Jar"/>
    <echo message="            client      : Lance un client à partir du Jar"/>
    <echo message="            clientnojar : Lance un client sans utiliser le Jar"/>
    <echo message="            robot       : Lance un joueur machine"/>
    <echo message="            compile     : Compilation du projet"/>
    <echo message="            dist        : Compilation + Archives Jar non signées"/>
    <echo message="            signature   : Compilation + Archives Jar signées"/>
    <echo message="            javadoc     : Documentation"/>
    <echo message="            clean       : Nettoyage des classes et des archives"/>
    <echo message="            clean-all   : Idem + documentation Javadoc"/>
  </target>

</project>

