<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<project basedir="." name="skins">
<!-- public targets -->
  <target name="available-skins"
          depends="init-props, skin-unavailable, fetch-skins-descriptors"
          description="What skins are available?">
    <for param="skin-descriptor-file">
      <path>
        <fileset dir="${forrest.skins-dir}" includes="skins-*.xml"/>
      </path>
      <sequential>
        <xslt in="@{skin-descriptor-file}" 
          out="${project.temp-dir}/skinlist2echobuild.xml"
          style="${forrest.core}/var/skinlist2echo.xsl"/>
        <ant antfile="${project.temp-dir}/skinlist2echobuild.xml"/>
      </sequential>
    </for>
  </target>
  <target name="package-skin" description="Make a package of an existing skin" depends="init-props">
    <input message="Which skin do you want to package?"
           addproperty="skin-name"/>
    <zip destfile="${forrest.skins-dir}/${skin-name}-${forrest.version}.zip"
       basedir="${forrest.skins-dir}/"
       includes="${skin-name}/**"/>
  </target>
  <target name="install-skin" 
          depends = "init-skins"
          description="Install the needed skin from the remote repository"/>
<!-- private -->
  <target name="init-skins" depends="init-props, check-skin, fetch-skin, unpack-skins"/>
  <target name="skin-unavailable">
    <property name="skin.unavailable" value="true"/>
  </target>
  <target name="check-skin">
    <condition property="skin.unavailable">
      <and>
        <not>
          <available type="dir" file="${forrest.skins-dir}/${project.skin}"/>
        </not>
        <not>
          <available type="file" file="${forrest.skins-dir}/${project.skin}.zip"/>
        </not>
        <not>
          <available type="dir" file="${skins-dir}/${project.skin}"/>
        </not>
      </and>
    </condition>
  </target>
  <target name="unpack-skins"
          depends="init-props">
    <unzip dest="${forrest.skins-dir}/">
      <fileset dir="${forrest.skins-dir}/">
        <include name="*.zip"/>
      </fileset>
    </unzip>
    <delete>
      <fileset dir="${forrest.skins-dir}/">
        <include name="*.zip"/>
      </fileset>
    </delete>
  </target>
  <target name="fetch-skins-descriptors" if="skin.unavailable" depends="init-proxy">
    <delete>
      <fileset dir="${forrest.skins-dir}" includes="skins-*.xml"/>
    </delete>
    <var name="skin-counter" value="1"/>
    <for list="${forrest.skins.descriptors}" param="url">
      <sequential>
        <echo level="info">fetching descriptor: @{url}</echo>
        <get src="@{url}" 
           dest="${forrest.skins-dir}/skins-${skin-counter}.xml"
           verbose="true" usetimestamp="true" ignoreerrors="true"/>
        <if>
          <not>
            <available file="${forrest.skins-dir}/skins-${skin-counter}.xml"/>
          </not>
          <then>
            <fail>Stopped...
ERROR
=====
       
Unable to retrieve the skins descriptors at @{url}.
There may be more information about the reason for this in ouput
above. The usual cause is that Forrest has been unable to download
the file. If you are behind a firewall then set the proxy.host 
and proxy.port values in the forrest.properties file.
       </fail>
          </then>
        </if>
        <math result="skin-counter" operand1="${skin-counter}" operation="+" operand2="1" datatype="int"/>
      </sequential>
    </for>
  </target>
  <target name="fetch-skin" 
          if = "skin.unavailable"
          depends="init-props, fetch-skins-descriptors">
    <for param="skin-descriptor-file">
      <path>
        <fileset dir="${forrest.skins-dir}" includes="skins-*.xml"/>
      </path>
      <sequential>
        <xslt in="@{skin-descriptor-file}" 
          out="${project.temp-dir}/skinlist2fetchbuild.xml"
          style="${forrest.core}/var/skinlist2fetch.xsl"
          force="true">
          <param name="skin-name" expression="${project.skin}"/>
          <param name="forrest-version" expression="${forrest.version}"/>
        </xslt>
        <ant antfile="${project.temp-dir}/skinlist2fetchbuild.xml"/>
      </sequential>
    </for>
  </target>
</project>
