<?xml version="1.0" encoding="UTF-8"?>
<project name="fabrik3-package" default="fabrik.all">

<!--  fabrik.all -->
	<property file="build_config.ini" />
	<property file="build_config_private.ini" />
	<import file="./build_updateserver_xml.xml"/>
	<import file="./build_js.xml" />

	<property name="update_source" value="${basedir}/administrator/components/com_fabrik/update/fabrik/" />
	<property name="update_dir" value="${cfg.destdir}/admin/update/fabrik/" />
	<property name="package_list" value="${update_dir}/package_list.xml" />

	<property name="plugin.folders" value="cron,element,form,list,validationrule,visualization" />
	<property name="plugins.cron" value="email,php" />
	<property name="plugins.element" value="button,calc,captcha,cascadingdropdown,checkbox,databasejoin,date,display,dropdown,field,fileupload,googlemap,image,internalid,ip,link,password,radiobutton,textarea,time,user,usergroup,viewlevel,yesno" />
	<property name="plugins.form" value="email,juser,php,receipt,redirect" />
	<property name="plugins.list" value="copy,email,php,update_col" />
	<property name="plugins.validationrule" value="akismet,areuniquevalues,emailexists,isalphanumeric,isemail,isgreaterorlessthan,isnot,notempty,php,regex,specialchars,userexists" />
	<property name="plugins.visualization" value="calendar,chart,coverflow,fusion_gantt_chart,fusionchart,googlemap,media,slideshow,timeline" />

	<!-- Travis-ci properties -->
	
	<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
	<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>

	<target name="phpcs" description="Ensure Code Style Rules">
		<if>
			<equals arg1="${cfg.os}" arg2="unix" />
			<then>
			    <exec executable="${phpcs.path}">
			        <arg line="
			            --report=checkstyle
			            --report-file='${basedir}/fabrik_build/logs/checkstyle.xml'
			            --standard=Joomla
			            --ignore=*/administrator/components/*
			            -p
			            ${basedir}/components/com_fabrik/" />
			    </exec>
			</then>
			<else>
			    <exec executable="cmd">
			        <arg line="/c ${phpcs.path}
			            --report=checkstyle
			            --report-file='${basedir}/fabrik_build/logs/checkstyle.xml'
			            --standard=Joomla
			            --ignore=*\\administrator\\components\\*
			            -p
			            ${basedir}/components/com_fabrik/" />
			    </exec>
		    </else>
	    </if>
	</target>
	
	<target name="uploadPhpDoc" description="Upload PHP docs created in target:phpdoc">
		<ftp passive ="yes" server="${ftp.server}" userid="${ftp.user}" password="${ftp.password}"
			depends="false"
			ignoreNoncriticalErrors="true"
			retriesAllowed="3"
			verbose="yes" remotedir="${ftp.docdir}"
			 skipFailedTransfers="true">
			<fileset dir="${phpdoc.localdir}">
				<include name="**/**" />
			</fileset>
		</ftp>
	</target>


	<target name="fabrik.all">
		<antcallback target="git.tags.get" return="project.current, git.tags, project.previous"/>
		<input message="Component version:" addproperty="version" defaultvalue="${project.current}"/>

		<input message="Deployment to test or live server?" addproperty="deploy.to" validargs="test,live" defaultvalue="test" />

		<!-- Set up deployment environment -->
		<if>
			<equals arg1="${deploy.to}" arg2="test" />
			<then>
				<property name="sql.downloads_table" value="${sql.downloads_table.test}" />
				<property name="ftp.updatedir" value="${ftp.updatedir.test}" />
				<property name="ftp.update.folder" value="${ftp.update.folder.test}" />
				<property name="update.download_folder" value="${update.download_folder_test}" />
				<property name="ftp.downloaddir" value="${ftp.downloaddir_test}" />
			</then>
			<else>
				<property name="sql.downloads_table" value="${sql.downloads_table.live}" />
				<property name="ftp.updatedir" value="${ftp.updatedir.live}" />
				<property name="ftp.update.folder" value="${ftp.update.folder.live}" />
				<property name="update.download_folder" value="${update.download_folder_live}" />
				<property name="ftp.downloaddir" value="${ftp.downloaddir_live}" />
			</else>
		</if>
		<echo>${sql.downloads_table} ${ftp.updatedir} ${ftp.update.folder}</echo>
		<echo>update download folder = ${update.download_folder} </echo>

		<input message="JS Lint and compress?" addproperty="jslint.do" validargs="y,n" defaultvalue="y" />

		<if>
 			<equals arg1="${jslint.do}" arg2="y" />
			<then>
			<antcall target="js" />
			</then>
		</if>

		<input message="Create Change log?" addproperty="changelog" validargs="y,n" defaultvalue="n" />
		<if>
			<equals arg1="${changelog}" arg2="y" />
			<then>
				<antcall target="changelog.update" />
			</then>
		</if>

		<input message="PHP Doc?" addproperty="phpdoc" validargs="y,n" defaultvalue="n" />
		<if>
 			<equals arg1="${phpdoc}" arg2="y" />
			<then>
			<antcall target="phpdoc" />
			</then>
		</if>
		<input message="Upload PHP docs to fabrikar.com" addproperty="phpdocupload" validargs="y,n" defaultvalue="n" />
		<if>
			<equals arg1="${phpdocupload}" arg2="y" />
			<then>
				<antcall target="uploadPhpDoc"/>
			</then>
		</if>


		<input message="Joomla target version:" addproperty="jversion" defaultvalue="3.2"/>
		<input message="Component version:" addproperty="version" defaultvalue="${git.log.range.end}"/>
		<input message="build zips?" addproperty="zip.do" validargs="y,n" defaultvalue="y" />

		<if>
 			<equals arg1="${zip.do}" arg2="y" />
			<then>
				<foreach list="element,cron,form,list,validationrule,visualization" param="folder" target="updater.testfiles" inheritall="true" inheritrefs="true"/>
				<echo message=" destination dir = ${cfg.destdir}, git files ${basedir}" />
				<antcall target="fabrik.refreshfiles" />
				<antcall target="fabrik.start_packagelist" />
				<antcall target="fabrik.component" />
				<antcall target="fabrik.modules" />
				<antcall target="fabrik.package.sink.start" />
				<antcall target="fabrik.package.start" />
				<antcall target="fabrik.plugins" />
				<antcall target="fabrik.fabrikplugins" />
				<antcall target="fabrik.package.sink.end" />
				<antcall target="fabrik.package.end" />
			</then>
		</if>
		<antcall target="updater.ftp" />
		<echo message="Fabrik build ${version} complete" />
	</target>

	<target name="fabrik.start_packagelist">
		<xmltask dest="${package_list}">
      <insert path="/"  >
      <![CDATA[<extensionset name="Fabrik" description="Fabrik">
</extensionset>]]>
   		</insert>
   </xmltask>
	</target>

	<target name="fabrik.fabrikplugins">
		<mkdir dir="${cfg.destdir}/plugins/fabrik_element/" />
		<mkdir dir="${cfg.destdir}/plugins/fabrik_cron/" />
		<mkdir dir="${cfg.destdir}/plugins/fabrik_form/" />
		<mkdir dir="${cfg.destdir}/plugins/fabrik_list/" />
		<!-- fabrik plug-ins -->
		<foreach list="element,cron,form,list,validationrule,visualization" param="folder" target="fabrik.zipfabrikpluginfolder" inheritall="true" inheritrefs="true"/>
	</target>

	<target name="fabrik.zipfabrikpluginfolder">
		<dirset id="dist.contents" dir="${basedir}/plugins/fabrik_${folder}/" includes="*"/>
		<property name="prop.dist.contents" refid="dist.contents"/>
		<echo>${prop.dist.contents}</echo>
		<foreach list="${prop.dist.contents}" delimiter=";" param="plugin" target="fabrik.zipfabrikpluginfolder.plugin"  inheritall="true" inheritrefs="true"/>
	</target>

	<target name="fabrik.zipfabrikpluginfolder.plugin">
		<xmltask source="${package_list}" dest="${package_list}">
			<insert path="/extensionset">
      <![CDATA[<extension name="${update.product_name} ${folder} - ${plugin}" element="${plugin}" type="plugin" folder="${update.product_code}_${folder}" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/plg_${folder}_${plugin}.xml" />]]>
   		</insert>
		</xmltask>
		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_${folder}_${plugin}_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_${folder}_${plugin}_${version}.zip" basedir="${cfg.destdir}/plugins/fabrik_${folder}/${plugin}" />
	</target>


	<target name="fabrik.plugins">
		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_${version}.zip">
			<zipfileset dir="${cfg.destdir}/plugins/content" />
		</zip>
 
		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_search_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_search_${version}.zip" basedir="${cfg.destdir}/plugins/search" />

		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_schedule_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_schedule_${version}.zip" basedir="${cfg.destdir}/plugins/system/fabrikcron" />

		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plug_cb_fabrik_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plug_cb_fabrik_${version}.zip" basedir="${cfg.destdir}/components/com_comprofiler/plugin/user/plug_fabrik" />

		<delete file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_system_fabrik_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik_sink/packages/plg_system_fabrik_${version}.zip" basedir="${cfg.destdir}/plugins/system/fabrik" />

		<delete file="${cfg.destdir}/pkg_fabrik/packages/plg_system_fabrik_${version}.zip" />
		<zip destfile="${cfg.destdir}/pkg_fabrik/packages/plg_system_fabrik_${version}.zip" basedir="${cfg.destdir}/plugins/system/fabrik" />

		<xmltask source="${update_dir}/plg_fabrik.xml" dest="${update_dir}/plg_fabrik.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>
		<xmltask source="${update_dir}/plg_fabrik.xml" dest="${update_dir}/plg_fabrik.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>Fabrik Content Plugin</name>
			<description>Fabrik Content Plugin</description>
			<type>plugin</type>
			<element>fabrik</element>
			<folder>content</folder>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/plg_fabrik_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>
		]]>
	   		</insert>
		</xmltask>

		<xmltask source="${update_dir}/plg_search_fabrik.xml" dest="${update_dir}/plg_search_fabrik.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>
		<xmltask source="${update_dir}/plg_search_fabrik.xml" dest="${update_dir}/plg_search_fabrik.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>Fabrik Search Plugin</name>
			<description>Fabrik Search Plugin</description>
			<type>plugin</type>
			<element>fabrik</element>
			<folder>search</folder>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/plg_fabrik_search_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>
		]]>
	   		</insert>
		</xmltask>

		<xmltask source="${update_dir}/plg_system_fabrikcron.xml" dest="${update_dir}/plg_system_fabrikcron.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>
		<xmltask source="${update_dir}/plg_system_fabrikcron.xml" dest="${update_dir}/plg_system_fabrikcron.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>Fabrik Scheduled Tasks Plugin</name>
			<description>Fabrik Scheduled Tasks Plugin</description>
			<type>plugin</type>
			<element>fabrikcron</element>
			<folder>system</folder>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/plg_fabrik_schedule_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>
		]]>
	   		</insert>
		</xmltask>

		<xmltask source="${update_dir}/plg_system_fabrik.xml" dest="${update_dir}/plg_system_fabrik.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>
		<xmltask source="${update_dir}/plg_system_fabrik.xml" dest="${update_dir}/plg_system_fabrik.xml">
			<insert path="updates">
				<![CDATA[<update>
				<name>Fabrik System Plugin</name>
			<description>Fabrik System Plugin</description>
			<type>plugin</type>
			<element>fabrik</element>
			<folder>system</folder>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/plg_system_fabrik_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>
		]]>
	   		</insert>
		</xmltask>


		<xmltask source="${package_list}" dest="${package_list}">
			<insert path="/extensionset">
				<![CDATA[<extension name="Fabrik" element="fabrik" type="plugin" folder="content" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/plg_fabrik.xml" />
<extension name="Search - Fabrik" element="fabrik" type="plugin" folder="search" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/plg_search_fabrik.xml" />
<extension name="System - FabrikSheduled Tasks" element="fabrikcron" type="plugin" folder="system" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/plg_system_fabrikcron.xml" />
<extension name="System - Fabrik" element="fabrik" type="plugin" folder="system" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/plg_system_fabrik.xml" />
]]>
   		</insert>
		</xmltask>

	</target>

	<target name="fabrik.modules">
		<zip destfile="${cfg.destdir}/mod_fabrik_form_${version}.zip" basedir="${cfg.destdir}/modules/mod_fabrik_form" />
		<zip destfile="${cfg.destdir}/mod_fabrik_list_${version}.zip" basedir="${cfg.destdir}/modules/mod_fabrik_list" />

		<xmltask source="${update_dir}/mod_fabrik_list.xml" dest="${update_dir}/mod_fabrik_list.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>

		<xmltask source="${update_dir}/mod_fabrik_list.xml" dest="${update_dir}/mod_fabrik_list.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>Fabrik List Module</name>
			<description>Fabrik List Module</description>
			<element>mod_fabrik_list</element>
			<type>module</type>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/mod_fabrik_list_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>]]>
	   		</insert>
		</xmltask>

		<xmltask source="${update_dir}/mod_fabrik_form.xml" dest="${update_dir}/mod_fabrik_form.xml">
			<remove path="/updates/update[version='${version}']" />
		</xmltask>

		<xmltask source="${update_dir}/mod_fabrik_form.xml" dest="${update_dir}/mod_fabrik_form.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>Fabrik Form Module</name>
			<description>Fabrik Form Module</description>
			<element>mod_fabrik_form</element>
			<type>module</type>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/mod_fabrik_form_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>]]>
	   		</insert>
		</xmltask>

		<xmltask source="${package_list}" dest="${package_list}">
			<insert path="/extensionset">
			<![CDATA[<extension name="Fabrik form" element="mod_fabrik_form" type="module" folder="" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/mod_fabrik_form.xml" />]]>
     		<![CDATA[<extension name="Fabrik list" element="mod_fabrik_list" type="module" folder="" version="${version}" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/mod_fabrik_list.xml" />]]>
   		</insert>
		</xmltask>
	</target>


	<target name="fabrik.prepXML">
		<if>
			<available file="${update_dir}/${file}" />
				<then>
					<xmltask source="${update_dir}/${file}" dest="${update_dir}/${file}">
						<remove path="/updates/update[version='${version}']" />
					</xmltask>
			</then>
			<else>
				<xmltask dest="${update_dir}/${file}">
				<insert path="/"  >
					<![CDATA[<updates>
		</updates>]]>
				</insert>
			</xmltask>
			</else>
		</if>
	</target>

	<target name="fabrik.component">
		<!-- create a zip  ( note you cant use as the file paths are more than 100 chars and the Joomla archieve class falls over) of the plugins dir for unpacking upon installation -->

		<move file="${cfg.destdir}/admin/fabrik.xml" todir="${cfg.destdir}" />
		<move file="${cfg.destdir}/admin/com_fabrik.manifest.class.php" todir="${cfg.destdir}" />

		<!-- need to move the package.xml file out of the component to avoid nasties -->
		<move file="${cfg.destdir}/admin/pkg_fabrik.xml" todir="${cfg.destdir}" />
		<move file="${cfg.destdir}/admin/pkg_fabrik_sink.xml" todir="${cfg.destdir}" />


		<zip destfile="${cfg.destdir}/com_fabrik_${version}.zip" basedir="${cfg.destdir}" excludes="modules/**, plugins/**, pkg_fabrik_sink/** pkg_fabrik.xml
			/components/com_fabrik/sef_ext/**" />

		<foreach list="com_fabrik.xml,mod_fabrik_list.xml,mod_fabrik_form.xml,plg_fabrik.xml,plg_search_fabrik.xml,plg_system_fabrikcron.xml,plg_system_fabrik.xml" param="file" target="fabrik.prepXML" inheritall="true" inheritrefs="true"/>

		<xmltask source="${update_dir}/com_fabrik.xml" dest="${update_dir}/com_fabrik.xml">
			<insert path="updates">
				<![CDATA[<update>
			<name>${update.product_name}</name>
			<description>${update.product_name} Component</description>
			<element>com_fabrik</element>
			<type>component</type>
			<version>${version}</version>
			<downloads>
				<downloadurl format="zip" type="full">${update.download_folder}/com_fabrik_${version}.zip</downloadurl>
			</downloads>
			<maintainer>${update.maintainer}</maintainer>
			<maintainerurl>${update.url}</maintainerurl>
			<targetplatform name="${update.target_platform}" version="${jversion}"/>
		</update>]]>
	   		</insert>
		</xmltask>

		<xmltask source="${package_list}" dest="${package_list}">
			<insert path="/extensionset">
     		<![CDATA[<extension name="fabrik" element="com_fabrik" type="component" folder="" version="${version}" client="administrator" detailsurl="http://fabrikar.com/update/${ftp.update.folder}/com_fabrik.xml" />]]>
   		</insert>
		</xmltask>
	</target>

	<!-- package with the basics installed -->
	<target name="fabrik.package.start">

			<mkdir dir="${cfg.destdir}/pkg_fabrik/" />
			<mkdir dir="${cfg.destdir}/pkg_fabrik/packages" />
			<replace file="${cfg.destdir}/pkg_fabrik.xml" token="{version}" value="${version}"/>
			<copy file="${cfg.destdir}/pkg_fabrik.xml" todir="${cfg.destdir}/pkg_fabrik" />
			<replace file="${cfg.destdir}/pkg_fabrik.xml" token="{version}" value="${version}"/>
			<copy file="${cfg.destdir}/com_fabrik_${version}.zip" todir="${cfg.destdir}/pkg_fabrik/packages/" />
			<copy file="${cfg.destdir}/mod_fabrik_form_${version}.zip" todir="${cfg.destdir}/pkg_fabrik/packages/" />
			<copy file="${cfg.destdir}/mod_fabrik_list_${version}.zip" todir="${cfg.destdir}/pkg_fabrik/packages/" />

		</target>

		<target name="fabrik.package.end">
			<for list="${plugin.folders}" param="plugin.type">
				<sequential>
	            	<dirname property="plugins.@{plugin.type}" file="@{plugin.type}"/>
					<echo>@{plugin.type}</echo>
					<echo>${plugins.@{plugin.type}}</echo>
					<for list="${plugins.@{plugin.type}}" param="plugin.name">
						<sequential>
							<var name="filename" value="plg_fabrik_@{plugin.type}_@{plugin.name}_${version}.zip" />
							<copy file="${cfg.destdir}/pkg_fabrik_sink/packages/${filename}" todir="${cfg.destdir}/pkg_fabrik/packages/" />
						</sequential>
					</for>
				</sequential>
			</for>
			<copy file="${cfg.destdir}/pkg_fabrik_sink/packages/plg_fabrik_${version}.zip" todir="${cfg.destdir}/pkg_fabrik/packages/" />
			<zip destfile="${cfg.destdir}/pkg_fabrik_${version}.zip" basedir="${cfg.destdir}/pkg_fabrik"/>
		</target>

	<!-- package which will install everything -->

	<target name="fabrik.package.sink.start">
		<mkdir dir="${cfg.destdir}/pkg_fabrik_sink/" />
		<mkdir dir="${cfg.destdir}/pkg_fabrik_sink/packages" />
		<replace file="${cfg.destdir}/pkg_fabrik_sink.xml" token="{version}" value="${version}"/>
		<copy file="${cfg.destdir}/pkg_fabrik_sink.xml" todir="${cfg.destdir}/pkg_fabrik_sink" />
		<copy file="${cfg.destdir}/com_fabrik_${version}.zip" todir="${cfg.destdir}/pkg_fabrik_sink/packages/" />
		<copy file="${cfg.destdir}/mod_fabrik_form_${version}.zip" todir="${cfg.destdir}/pkg_fabrik_sink/packages/" />
		<copy file="${cfg.destdir}/mod_fabrik_list_${version}.zip" todir="${cfg.destdir}/pkg_fabrik_sink/packages/" />
		<copy file="${cfg.destdir}/mod_fabrik_list_${version}.zip" todir="${cfg.destdir}/pkg_fabrik_sink/packages/" />
	</target>

	<target name="fabrik.package.sink.end">
			<zip destfile="${cfg.destdir}/pkg_fabrik_sink_${version}.zip" basedir="${cfg.destdir}/pkg_fabrik_sink" />
	</target>

	<target name="fabrik.refreshfiles">
		<antcall target="refresh.updatexml" />
		<delete dir="${cfg.destdir}" />
		<mkdir dir="${cfg.destdir}/admin/" />

		<antcall target="xml.update.repoistory" />

		<copy todir="${cfg.destdir}/admin/">
			<fileset dir="${basedir}/administrator/components/com_fabrik/">
				<exclude name="**/*.zip" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/" />
		<copy todir="${cfg.destdir}/site/">
			<fileset dir="${basedir}/components/com_fabrik/">
				<exclude name="**/*.zip" />
				<exclude name="**/views/form/tmpl/**" />
				<exclude name="**/views/list/tmpl/**" />
				<exclude name="/js/*.js" />
			</fileset>
		</copy>

		<!-- explicitly include list 2.5 templates -->

		<copy file="${basedir}/components/com_fabrik/views/list/tmpl25/default.xml" todir="${cfg.destdir}/site/views/list/tmpl25/" />
		<copy file="${basedir}/components/com_fabrik/views/list/tmpl25/_advancedsearch.php" todir="${cfg.destdir}/site/views/list/tmpl25/" />

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl25/admin" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl25/admin">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl25/admin" />
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl25/adminmodule" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl25/adminmodule">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl25/adminmodule" />
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl25/bluesky" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl25/bluesky">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl25/bluesky" />
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl25/default" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl25/default">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl25/default">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl25/div" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl25/div">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl25/div" />
		</copy>

		<!-- explicitly include 3.0 list templates -->

		<copy file="${basedir}/components/com_fabrik/views/list/tmpl/default.xml" todir="${cfg.destdir}/site/views/list/tmpl/" />
		<copy file="${basedir}/components/com_fabrik/views/list/tmpl/_advancedsearch.php" todir="${cfg.destdir}/site/views/list/tmpl/" />

		<mkdir dir="${cfg.destdir}/site/views/list/tmpl/bootstrap" />
		<copy todir="${cfg.destdir}/site/views/list/tmpl/bootstrap">
			<fileset dir="${basedir}/components/com_fabrik/views/list/tmpl/bootstrap">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<!-- explicitly include 2.5 form templates -->

		<copy file="${basedir}/components/com_fabrik/views/form/tmpl25/default.xml" todir="${cfg.destdir}/site/views/form/tmpl25/" />

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/admin" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/admin">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/admin">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/bluesky" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/bluesky">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/bluesky">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/contacts_custom" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/contacts_custom">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/contacts_custom">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/default" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/default">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/default">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/default_rtl" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/default_rtl">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/default_rtl">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/mint" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/mint">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/mint" >
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/no-labels" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/no-labels">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/no-labels">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl25/tabs" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl25/tabs">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl25/tabs">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<!-- explicitly include 3.0 form templates -->

		<copy file="${basedir}/components/com_fabrik/views/form/tmpl/default.xml" todir="${cfg.destdir}/site/views/form/tmpl/" />

		<mkdir dir="${cfg.destdir}/site/views/form/tmpl/bootstrap" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl/bootstrap">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl/bootstrap">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>
		
		<mkdir dir="${cfg.destdir}/site/views/form/tmpl/bootstrap_tabs" />
		<copy todir="${cfg.destdir}/site/views/form/tmpl/bootstrap_tabs">
			<fileset dir="${basedir}/components/com_fabrik/views/form/tmpl/bootstrap_tabs">
				<exclude name="**/custom_css.php" />
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/media/com_fabrik" />
		<copy todir="${cfg.destdir}/media/com_fabrik">
			<fileset dir="${basedir}/media/com_fabrik">
				<exclude name="**/*.zip" />
			</fileset>
		</copy>


		<mkdir dir="${cfg.destdir}/site/fabrikfeed" />
		<copy todir="${cfg.destdir}/site/fabrikfeed">
			<fileset dir="${basedir}/libraries/joomla/document/fabrikfeed">
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/site/pdf" />
		<copy todir="${cfg.destdir}/site/pdf">
			<fileset dir="${basedir}/libraries/joomla/document/pdf">
			</fileset>
		</copy>

		<!-- copy over the database drivers -->
		<mkdir dir="${cfg.destdir}/site/dbdriver" />
		<copy file="${basedir}/libraries/joomla/database/database/mysql_fab.php" todir="${cfg.destdir}/site/dbdriver" />
		<copy file="${basedir}/libraries/joomla/database/database/mysqli_fab.php" todir="${cfg.destdir}/site/dbdriver" />

		<!--  J3.0 db drivers -->
		<mkdir dir="${cfg.destdir}/site/driver" />
		<copy file="${basedir}/libraries/joomla/database/driver/mysql_fab.php" todir="${cfg.destdir}/site/driver" />
		<copy file="${basedir}/libraries/joomla/database/driver/mysqli_fab.php" todir="${cfg.destdir}/site/driver" />
		<mkdir dir="${cfg.destdir}/site/query" />
		<copy file="${basedir}/libraries/joomla/database/query/mysql_fab.php" todir="${cfg.destdir}/site/query" />
		<copy file="${basedir}/libraries/joomla/database/query/mysqli_fab.php" todir="${cfg.destdir}/site/query" />

		<mkdir dir="${cfg.destdir}/modules/mod_fabrik_form/" />
		<copy todir="${cfg.destdir}/modules/mod_fabrik_form/">
			<fileset dir="${basedir}/modules/mod_fabrik_form/">
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/modules/mod_fabrik_list/" />
		<copy todir="${cfg.destdir}/modules/mod_fabrik_list/">
			<fileset dir="${basedir}/modules/mod_fabrik_list/">
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/content/fabrik" />
		<copy todir="${cfg.destdir}/plugins/content/fabrik">
			<fileset dir="${basedir}/plugins/content/fabrik">
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/search" />
		<copy todir="${cfg.destdir}/plugins/search">
			<fileset dir="${basedir}/plugins/search/fabrik">
			</fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/system" />
		<mkdir dir="${cfg.destdir}/plugins/system/fabrikcron" />
		<copy file="${basedir}/plugins/system/fabrikcron/fabrikcron.xml" todir="${cfg.destdir}/plugins/system/fabrikcron" />
		<copy file="${basedir}/plugins/system/fabrikcron/fabrikcron.php" todir="${cfg.destdir}/plugins/system/fabrikcron" />
		
		<mkdir dir="${cfg.destdir}/components/com_comprofiler/plugin/user/plug_fabrik" />
		<copy todir="${cfg.destdir}/components/com_comprofiler/plugin/user/plug_fabrik">
			<fileset dir="${basedir}/components/com_comprofiler/plugin/user/plug_fabrik"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/system/fabrik" />
		<copy todir="${cfg.destdir}/plugins/system/fabrik">
			<fileset dir="${basedir}/plugins/system/fabrik"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_cron" />
		<copy todir="${cfg.destdir}/plugins/fabrik_cron/">
			<fileset dir="${basedir}/plugins/fabrik_cron/"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_element" />
		<copy todir="${cfg.destdir}/plugins/fabrik_element/">
			<fileset dir="${basedir}/plugins/fabrik_element/"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_form" />
		<copy todir="${cfg.destdir}/plugins/fabrik_form/">
			<fileset dir="${basedir}/plugins/fabrik_form/"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_list" />
		<copy todir="${cfg.destdir}/plugins/fabrik_list/">
			<fileset dir="${basedir}/plugins/fabrik_list/"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_validationrule" />
		<copy todir="${cfg.destdir}/plugins/fabrik_validationrule/">
			<fileset dir="${basedir}/plugins/fabrik_validationrule/"></fileset>
		</copy>

		<mkdir dir="${cfg.destdir}/plugins/fabrik_visualization" />
		<copy todir="${cfg.destdir}/plugins/fabrik_visualization/">
			<fileset dir="${basedir}/plugins/fabrik_visualization/">
					<exclude name="**/FusionCharts/**" />
					<exclude name="**/FusionChartsFree/**" />
			</fileset>
		</copy>

	</target>

	<target name="refresh.updatexml">
		<antcall target="xml.update.repoistory" />
	</target>

	<target name="xml.update.repoistory">
		<tstamp>
	      <format property="createdate" pattern="MMMM yyyy" locale="en,UK"/>
	 	 </tstamp>
	  	<tstamp>
	      <format property="year" pattern="yyyy" locale="en,UK"/>
	  	</tstamp>
	  	<echo>create date : ${createdate}</echo>
	  	<echo>year : ${year}</echo>
		<input message="Update local repoistory xml files with version number?" addproperty="repository.xml.update" validargs="y,n" defaultvalue="y" />
			<if>
	 			<equals arg1="${repository.xml.update}" arg2="y" />
				<then>

					<tstamp>
				      <format property="createdate" pattern="MMMM yyyy" locale="en,UK"/>
				 	 </tstamp>
				  	<tstamp>
				      <format property="year" pattern="yyyy" locale="en,UK"/>
				  	</tstamp>
				  	<echo>create date : ${createdate}</echo>
				  	<echo>year : ${year}</echo>

				<!-- Update version -->
				<replaceregexp flags="gs">
					<regexp pattern="\&lt;version\&gt;(.*)\&lt;/version\&gt;"/>
					<substitution expression="\&lt;version\&gt;${version}\&lt;/version\&gt;"/>
			  		<fileset dir="${basedir}">
			  			<include name="**/administrator/components/com_fabrik/*.xml"/>
						<include name="**/modules/mod_fabrik_list/mod_fabrik_*.xml"/>
			  			<include name="**/modules/mod_fabrik_list/mod_tagcloud.xml"/>
						<include name="**/modules/mod_fabrik*/mod_fabrik_*.xml"/>
						<include name="**/plugins/fabrik**/**/*.xml"/>
						<exclude name="**/FusionCharts/**" />
						<exclude name="**/FusionChartsFree/**" />
						<include name="**/plugins/**/fabrik/*.xml"/>
						<include name="**/plugins/system/fabrikcron/*.xml"/>
					</fileset>
				</replaceregexp>

				<!-- Update create date -->
				<replaceregexp flags="gs">
					<regexp pattern="\&lt;creationDate\&gt;(.*)\&lt;/creationDate\&gt;"/>
					<substitution expression="\&lt;creationDate\&gt;${createdate}\&lt;/creationDate\&gt;"/>
			  		<fileset dir="${basedir}">
			  			<include name="**/administrator/components/com_fabrik/*.xml"/>
						<include name="**/modules/mod_fabrik_list/mod_fabrik_*.xml"/>
			  			<include name="**/modules/mod_fabrik_list/mod_tagcloud.xml"/>
						<include name="**/modules/mod_fabrik*/mod_fabrik_*.xml"/>
						<include name="**/plugins/fabrik**/**/*.xml"/>
						<exclude name="**/FusionCharts/**" />
						<exclude name="**/FusionChartsFree/**" />
						<include name="**/plugins/**/fabrik/*.xml"/>
						<include name="**/plugins/system/fabrikcron/*.xml"/>
					</fileset>
				</replaceregexp>

				<!-- Update copyright -->
				<replaceregexp flags="gs">
					<regexp pattern="\&lt;copyright\&gt;(.*)\&lt;/copyright\&gt;"/>
					<substitution expression="\&lt;copyright\&gt;Copyright (C) 2005-${year} fabrikar.com - All rights reserved.\&lt;/copyright\&gt;"/>
			  		<fileset dir="${basedir}">
			  			<include name="**/administrator/components/com_fabrik/*.xml"/>
						<include name="**/modules/mod_fabrik_list/mod_fabrik_*.xml"/>
						<include name="**/modules/mod_fabrik*/mod_fabrik_*.xml"/>
						<include name="**/plugins/fabrik**/**/*.xml"/>
						<exclude name="**/FusionCharts/**" />
						<exclude name="**/FusionChartsFree/**" />
						<include name="**/plugins/**/fabrik/*.xml"/>
						<include name="**/plugins/system/fabrikcron/*.xml"/>
					</fileset>
				</replaceregexp>

				<!-- Update target Joomla platform -->
				<replaceregexp flags="sg">
					<regexp pattern="(&lt;extension.*version=&quot;)(\d\.\d)(&quot;\s*&gt;)" />
					<substitution expression="\1${jversion}\3"/>
			  		<fileset dir="${basedir}">
						<include name="**/administrator/components/com_fabrik/*.xml"/>
						<include name="**/modules/mod_fabrik*/mod_fabrik_*.xml"/>
						<include name="**/plugins/fabrik**/**/*.xml"/>
						<exclude name="**/FusionCharts/**" />
						<exclude name="**/FusionChartsFree/**" />
						<include name="**/plugins/**/fabrik/*.xml"/>
						<include name="**/plugins/system/fabrikcron/*.xml"/>
					</fileset>
				</replaceregexp>


					<!--  need to do /:node/:node as fabrik.xml sets a namespace (xmlns) -->
				 	<!-- <xmltask todir="${basedir}">
						<fileset dir="${basedir}">
							<include name="**/administrator/components/com_fabrik/fabrik.xml"/>
						</fileset>
						<replace path="/:extension/:version/text()" withText="${version}"/>
						<replace path="/:extension/:creationDate/text()" withText="${createdate}" />
						<replace path="/:extension/:copyright/text()" withText="(C) 2005-${year} fabrikar.com" />
						<attr path="/:extension" attr="version" value="${jversion}" />
					</xmltask>

					<xmltask todir="${basedir}">
						<fileset dir="${basedir}">
							<include name="**/administrator/components/com_fabrik/pkg_fabrik.xml"/>
						</fileset>
						<replace path="/install/version/text()" withText="${version}"/>
						<replace path="/install/creationDate/text()" withText="${createdate}" />
						<replace path="/install/copyright/text()" withText="(C) 2005-${year} fabrikar.com" />
						<attr path="/install" attr="version" value="${jversion}" />
					</xmltask>

					<xmltask todir="${basedir}">
						<fileset dir="${basedir}">
							<include name="**/modules/mod_fabrik*/mod_fabrik_*.xml"/>
						</fileset>
						<replace path="/extension/version/text()" withText="${version}"/>
						<replace path="/extension/creationDate/text()" withText="${createdate}" />
						<replace path="/extension/copyright/text()" withText="(C) 2005-${year} fabrikar.com" />
						<attr path="/extension" attr="version" value="${jversion}" />
					</xmltask>


					<xmltask todir="${basedir}">
						<fileset dir="${basedir}">
							<include name="**/plugins/fabrik**/**/*.xml"/>
							<exclude name="**/FusionCharts/**" />
							<exclude name="**/FusionChartsFree/**" />
						</fileset>
						<replace path="/extension/version/text()" withText="${version}"/>
						<replace path="/extension/creationDate/text()" withText="${createdate}" />
						<replace path="/extension/copyright/text()" withText="(C) 2005-${year} fabrikar.com" />
						<attr path="/extension" attr="version" value="${jversion}" />
					</xmltask>

					<xmltask todir="${basedir}">
						<fileset dir="${basedir}">
							<include name="**/plugins/**/fabrik/*.xml"/>
							<include name="**/plugins/system/fabrikcron/*.xml"/>
						</fileset>
						<replace path="/extension/version/text()" withText="${version}"/>
						<replace path="/extension/creationDate/text()" withText="${createdate}" />
						<replace path="/extension/copyright/text()" withText="(C) 2005-${year} fabrikar.com" />
						<attr path="/extension" attr="version" value="${jversion}" />
					</xmltask> -->
				</then>
			</if>
	</target>

	<target name="git.tags.get">
		<!-- to get this to work:

		* go to run->external tools configuration
		* select the ant build
		* click on the environment tab
		* add a new entry
		* set the name 'PATH' and then add in the path to git e.g. C:\Program Files (x86)\Git\bin.
		-->

		 <exec executable="git" failonerror="true" outputproperty="git.tag">
		        <arg line="tag"/>
		    </exec>
		     <script language="javascript"><![CDATA[
		//get the two most recent tags to get the diff
		var tags = project.getProperty("git.tag").replace("\r", "").split("\n"),
		curTag = tags[tags.length-3],//was -1 but need to ignore  3.0a and 30.b
		priorTag = tags[tags.length-4]; //was -2 but need to ignore 3.0a and 30.b
		project.setProperty("project.current", curTag);
		project.setProperty("project.previous", priorTag);
		project.setProperty("git.log.range", priorTag + ".." + curTag);

		project.setProperty("git.tags", tags.join(','));
		]]></script>
	</target>

	<target name="changelog.update">
		<input message="Changelog: Latest tag" addproperty="git.log.range.end" validargs="${git.tags}" defaultvalue="${project.current}" />
		<input message="Changelog: Previous tag" addproperty="git.log.range.start" validargs="${git.tags}" defaultvalue="${project.previous}" />
		<exec executable="git" failonerror="true" outputproperty="git.changelog">
        	<arg line="log --pretty=format:'* %s (%an)' ${git.log.range.start}..${git.log.range.end}"/>
    	</exec>
    	<echo message="save change log to : ${cfg.destdir}/CHANGELOG-${git.log.range.end}.txt"></echo>
		<!-- <echo message="${git.changelog}"></echo> -->
       <echo force="true" file="${cfg.destdir}CHANGELOG-${git.log.range.end}.txt">${git.changelog}
     </echo>
	</target>

</project>