<!--
 * 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 default="java:jar"
  xmlns:ant="jelly:ant"
  xmlns:j="jelly:core">

  <!-- ================================================================== -->
  <!-- Copy into the binary distribution                                  -->
  <!-- ================================================================== -->
  <postGoal name="dist:prepare-bin-filesystem">

    <copy todir="${maven.dist.bin.assembly.dir}">
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
    </copy>

  </postGoal>

  <!-- ================================================================== -->
  <!-- Copy into the source distribution                                  -->
  <!-- ================================================================== -->
  <postGoal name="dist:prepare-src-filesystem">

    <!-- Copy the NOTICE -->
    <copy todir="${maven.dist.src.assembly.dir}">
      <fileset file='${basedir}/NOTICE.txt'/>
      <fileset file="${basedir}/RELEASE-NOTES.txt"/>
      <fileset file="${basedir}/build.properties.sample"/>
      <fileset file="${basedir}/scxml-checks.xml"/>
      <fileset file="${basedir}/scxml-asl-header.txt"/>
      <fileset file="${basedir}/pom.xml"/>
    </copy>

    <!-- Copy xdoc files -->
    <copy todir="${maven.dist.src.assembly.dir}/xdocs">
      <fileset dir="./xdocs"/>
    </copy>

  </postGoal>

    <!-- ================================================================== -->
    <!-- Create MD5 Check Sums                                              -->
    <!-- ================================================================== -->
    <postGoal name="dist">

         <!-- Create a versioned pom -->
         <copy file="${basedir}/project.xml" tofile="${maven.dist.dir}/${maven.final.name}.pom"/>

         <!-- create checksum for pom -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.pom" property="pom.md5"/>
         <ant:echo message="${pom.md5} *${maven.final.name}.pom"
                   file="${maven.dist.dir}/${maven.final.name}.pom.md5" />

         <!-- create checksum for jar -->
         <ant:checksum file="${maven.build.dir}/${maven.final.name}.jar" property="jar.md5"/>
         <ant:echo message="${jar.md5} *${maven.final.name}.jar" 
                   file="${maven.build.dir}/${maven.final.name}.jar.md5" />

         <!-- create checksum for binary zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.zip" property="zip.md5"/>
         <ant:echo message="${zip.md5} *${maven.final.name}.zip" 
                   file="${maven.dist.dir}/${maven.final.name}.zip.md5" />

         <!-- create checksum for binary tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}.tar.gz" property="tar.gz.md5"/>
         <ant:echo message="${tar.gz.md5} *${maven.final.name}.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}.tar.gz.md5" />

         <!-- create checksum for source zip -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.zip" property="src.zip.md5"/>
         <ant:echo message="${src.zip.md5} *${maven.final.name}-src.zip" 
                   file="${maven.dist.dir}/${maven.final.name}-src.zip.md5" />

         <!-- create checksum for source tar.gz -->
         <ant:checksum file="${maven.dist.dir}/${maven.final.name}-src.tar.gz" property="src.tar.gz.md5"/>
         <ant:echo message="${src.tar.gz.md5} *${maven.final.name}-src.tar.gz" 
                   file="${maven.dist.dir}/${maven.final.name}-src.tar.gz.md5" />

    </postGoal>
  
</project>
