<?xml version="1.0" encoding="utf-8"?>
<project
	name="h5ai"
	basedir="."
	default="release"
>

	<target name="init">
		<property file="build.properties" />
		<tstamp>
			<format property="build.stamp" pattern="yyyy-MM-dd-HHmmss" />
		</tstamp>
		<property name="build.label" value="${project.name} ${project.version} b${build.stamp}" />
		<echo>Build: ${build.label}</echo>
	</target>

	<target name="clean" depends="init">
		<delete dir="${build.dir}" />
		<delete dir="${release.dir}" />
	</target>

	<target name="build-prepare" depends="clean">
		<mkdir dir="${build.dir}" />
		<copy todir="${build.dir}">
			<fileset dir="${src.dir}" />
			<fileset file="LICENSE.txt" />
			<fileset file="README.md" />
		</copy>
		<replace dir="${build.dir}">
			<replacefilter token="%BUILD%" value="${build.label}" />
			<replacefilter token="%BUILD_NAME%" value="${project.name}" />
			<replacefilter token="%BUILD_VERSION%" value="${project.version}" />
			<replacefilter token="%BUILD_STAMP%" value="${build.stamp}" />
		</replace>
	</target>

	<target name="build" depends="build-prepare">
		<wepp-dir-min dir="${build.dir}/_h5ai/css" todir="${build.dir}/_h5ai/css" />
		<wepp-dir-min dir="${build.dir}/_h5ai/js" todir="${build.dir}/_h5ai/js" />
		<delete dir="${build.dir}/_h5ai/css/inc" >
			<fileset dir="." includes="${build.dir}/_h5ai/css/**/*.less" />
		</delete>
		<delete dir="${build.dir}/_h5ai/js/inc" />
	</target>

	<target name="build-uncompressed" depends="build-prepare">
		<wepp-dir dir="${build.dir}/_h5ai/css" todir="${build.dir}/_h5ai/css" />
		<wepp-dir dir="${build.dir}/_h5ai/js" todir="${build.dir}/_h5ai/js" />
		<delete dir="${build.dir}/_h5ai/css/inc" >
			<fileset dir="." includes="${build.dir}/_h5ai/css/**/*.less" />
		</delete>
		<delete dir="${build.dir}/_h5ai/js/inc" />
	</target>

	<target name="release" depends="build">
		<mkdir dir="${release.dir}" />
		<zip destfile="${release.dir}/${project.name}-${project.version}.zip" basedir="${build.dir}" />
	</target>

	<target name="lint" depends="build-prepare">
		<wepp file="${build.dir}/_h5ai/js/main-js.js" tofile="${build.dir}/_h5ai/js/main-js.js" />
		<jslint files="${build.dir}/_h5ai/js/main-js.js" />
	</target>


	<macrodef name="wepp-args">
		<attribute name="args" default="" />
		<sequential>
			<exec executable="${tool.wepp}" failonerror="true">
				<arg line="@{args}" />
			</exec>
		</sequential>
	</macrodef>

	<macrodef name="wepp">
		<attribute name="file" />
		<attribute name="tofile" />
		<sequential>
			<wepp-args args="--nc --inFile '@{file}' --outFile '@{toFile}'" />
		</sequential>
	</macrodef>

	<macrodef name="wepp-min">
		<attribute name="file" />
		<attribute name="tofile" />
		<sequential>
			<wepp-args args="--inFile '@{file}' --outFile '@{toFile}'" />
			<bytes file="@{file}" toFile="@{toFile}" />
		</sequential>
	</macrodef>

	<macrodef name="wepp-dir">
		<attribute name="dir" />
		<attribute name="todir" />
		<sequential>
			<wepp-args args="--nc --inDir '@{dir}' --outDir '@{todir}'" />
		</sequential>
	</macrodef>

	<macrodef name="wepp-dir-min">
		<attribute name="dir" />
		<attribute name="todir" />
		<sequential>
			<wepp-args args="--inDir '@{dir}' --outDir '@{todir}'" />
		</sequential>
	</macrodef>

	<macrodef name="jslint">
		<attribute name="files" />
		<sequential>
			<echo>JSLint @{files}</echo>
			<exec executable="${tool.jslint}" failonerror="false">
				<arg line="@{files}" />
			</exec>
		</sequential>
	</macrodef>

</project>