<assembly>
  <!--
  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.
  -->
  <id>bin</id>
  
  <formats>
    <format>zip</format>
    <format>tar.gz</format>
  </formats>
  
  <fileSets>
  	<!-- include txt files -->
    <fileSet>
      <directory>..</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>ABOUT.*</include>
        <include>ARCHITECTURE.*</include>
        <include>HOW-TO.*</include>
        <include>LICENSE.*</include>
        <include>NOTICE.*</include>
        <include>STATUS.*</include>
      </includes>
    </fileSet>
    <!-- include configs -->
    <fileSet>
      <directory>../server/core/src/main/config/</directory>
      <outputDirectory>config</outputDirectory>
    </fileSet>
    
    <!--  create empty folders by copy a .dummy file -->
     <fileSet>
      <directory>.</directory>
      <outputDirectory>log</outputDirectory>
      <includes>
        <include>.dummy</include>
      </includes>
    </fileSet>
    
    <!-- include stuff from appassembler -->
    <fileSet>
      <directory>target/appassembler/lib</directory>
      <outputDirectory>lib</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>target/appassembler/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <lineEnding>dos</lineEnding>
      <includes>
        <include>*.bat</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>target/appassembler/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <lineEnding>unix</lineEnding>
      <includes>
        <include>*.sh</include>
      </includes>
    </fileSet>
    
     <fileSet>
      <directory>src/scripts/</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <lineEnding>dos</lineEnding>
      <includes>
        <include>*.bat</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>src/scripts/</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <lineEnding>unix</lineEnding>
      <includes>
        <include>setenv.sh</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>