<?xml version="1.0" encoding="UTF-8"?>
<!--
** This is a template build file for a JOSM  plugin.
**
** Maintaining versions
** ====================
** see README.template 
**
** Usage
** =====
** To build it run
** 
**    > ant  dist
**
** To install the generated plugin locally (in you default plugin directory) run 
** 
**    > ant  install
** 
** The generated plugin jar is not automatically available in JOSMs plugin configuration
** dialog. You have to check it in first. To check in run 
**
**   > ant publish 
**
-->
<project name="myPluginName" default="dist" basedir=".">
	

	<!-- 
		************************************************ 
		** configure these properties. Most of them will be copied to the plugins
		** manifest file. Property values will also show up in the list available 
		** plugins: http://josm.openstreetmap.de/wiki/Plugins.
		** 
		************************************************   
	-->
	<property name="plugin.author"          value="Your Name"/>
	<property name="plugin.class"           value="fully.qualified.name.of.your.PluginClass"/>
	<property name="plugin.description"     value="A Short description of your plugin (one line, to be displayed in the JOSMs plugin configuration dialog)"/>
	<property name="plugin.doc.url"         value="http://wiki.openstreetmap.org/index.php/JOSM/Plugins/YourPlugin"/>
	<property name="plugin.main.version"    value="0.1"/>	
    <property name="plugin.jar.name"        value="${ant.project.name}.jar"/>
	
    
	<!-- 
	  ************************************************ 
	  ** should not be necessary to change the following properties   
	 --> 
	<property name="josm"                   location="../../core/dist/josm-custom.jar"/>
	<property name="plugin.build.dir"       value="build"/>
	<property name="plugin.src.dir"         value="src"/>
	<!-- this is the directory where the plugin jar is copied to -->
    <property name="plugin.dist.dir"        value="../../dist"/>
	<property name="ant.build.javac.target" value="1.5"/>
	<property name="plugin.dist.dir"        value="../../dist"/>		
	<property name="plugin.jar"             value="${plugin.dist.dir}/${plugin.jar.name}"/>
	
	<!--
	**********************************************************
	** init - initializes the build
	**********************************************************
	-->
    <target name="init">
    	<!-- make sure we increment the build number ... -->
    	<buildnumber file="build.number" />	
    	
    	<!-- ... and check it back in -->
        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
            <env key="LANG" value="C"/>
            <arg value="commit"/>
        	<arg value="--message"/>
            <arg value="increment build number"/>
            <arg value="build.number"/>
		</exec>
        <mkdir dir="${plugin.build.dir}"/>
    </target>
	
	<!--
	**********************************************************
	** compile - complies the source tree 
	**********************************************************
	-->	
    <target name="compile" depends="init">
        <echo message="compiling sources for  ${plugin.jar.name} ... "/>
        <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}">
            <compilerarg value="-Xlint:deprecation"/>
            <compilerarg value="-Xlint:unchecked"/>
        </javac>
    </target>

	<!--
	**********************************************************
	** dist - creates the plugin jar 
	**********************************************************
	-->	
	<target name="dist" depends="compile,revision">
        <echo message="creating ${plugin.jar.name} ... "/>
		<copy todir="${plugin.build.dir}/resources">
            <fileset dir="resources"/>
        </copy>
		<copy todir="${plugin.build.dir}">
            <fileset dir=".">
            	<include name="README" />
            	<include name="LICENSE" />
            </fileset>
        </copy>
        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
            <manifest>
                <attribute name="Author" value="${plugin.author}"/>
                <attribute name="Plugin-Class" value="${plugin.class}"/>
                <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
                <attribute name="Plugin-Description" value="${plugin.description}"/>
                <attribute name="Plugin-Link" value="${plugin.doc.url}"/>
                <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
                <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 
            </manifest>
        </jar>
    </target>
	
	<!--
	**********************************************************
	** revision - extracts the current revision number for the
	**    file build.number and stores it in the XML property 
	**    version.* 
	**********************************************************
	-->	
    <target name="revision">
    	
    	<!-- extract the SVN revision information for file build.number -->
        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
            <env key="LANG" value="C"/>
            <arg value="info"/>
            <arg value="--xml"/>
            <arg value="build.number"/>
        </exec>
        <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
        <delete file="REVISION"/>
    </target>
	
	<!--
	**********************************************************
	** clean - clean up the build environment
	**********************************************************
	-->		
    <target name="clean">
        <delete dir="${plugin.build.dir}"/>
        <delete file="${plugin.jar}"/>
    </target>
    
	<!--
	**********************************************************
	** install - install the plugin in your local JOSM installation 
	**********************************************************
	-->			
	<target name="install" depends="dist">
        <property environment="env"/>
        <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins">
            <and>
                <os family="windows"/>
            </and>
        </condition>
        <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/>
    </target>
	
	<!--
	**********************************************************
	** publish - publish the plugin jar 
	**********************************************************
	-->			
	<target name="publish">
        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
            <env key="LANG" value="C"/>
            <arg value="commit"/>
        	<arg value="--message"/>
            <arg value="manual build"/>
            <arg value="${plugin.jar}"/>
		</exec>
	</target>
	
</project>
