<!--
  ~ 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.
  -->

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>bin</id>
    <formats>
        <format>dir</format>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}/src/main/lib/data</directory>
            <outputDirectory>lib/data</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/bin</directory>
            <outputDirectory>bin/</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/bin</directory>
            <outputDirectory>bin/</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/conf</directory>
            <outputDirectory>conf/</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-external/hadoop_jmx_collector</directory>
            <outputDirectory>tools/hadoop_jmx_collector/</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/examples</directory>
            <outputDirectory>examples/</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
            <excludes>
                <exclude>*.sh</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/examples</directory>
            <outputDirectory>examples/</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main</directory>
            <outputDirectory>.</outputDirectory>
            <includes>
                <include>README.md</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/docs</directory>
            <outputDirectory>docs/</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/lib/tomcat/bin</directory>
            <outputDirectory>lib/tomcat/bin</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/lib/tomcat/bin</directory>
            <outputDirectory>lib/tomcat/bin</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/lib/tomcat/conf</directory>
            <outputDirectory>lib/tomcat/conf</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
            <lineEnding>unix</lineEnding>
        </fileSet>

        <!-- /lib/logj4kafka -->
        <fileSet>
            <directory>${project.basedir}/../eagle-external/eagle-log4jkafka/target/eagle-log4jkafka-build</directory>
            <outputDirectory>lib/log4jkafka</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-external/eagle-log4jkafka/target/classes/conf</directory>
            <outputDirectory>lib/log4jkafka/conf</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>

        <!-- start of [lib/share] -->
        <fileSet>
            <directory>${project.basedir}/../eagle-external/eagle-log4jkafka/target/eagle-log4jkafka-build/lib</directory>
            <outputDirectory>lib/share</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-external/eagle-kafka/target</directory>
            <outputDirectory>lib/share</outputDirectory>
            <includes>
                <include>eagle-kafka-*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}/lib</directory>
            <outputDirectory>lib/tomcat/lib</outputDirectory>
            <includes>
                <include>tomcat*</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-webservice/target/eagle-service</directory>
            <outputDirectory>lib/tomcat/webapps/eagle-service</outputDirectory>
            <excludes>
                <exclude>WEB-INF/classes/config.properties</exclude>
                <exclude>WEB-INF/lib/servlet-api-*.jar</exclude>
                <exclude>WEB-INF/lib/jsp-api-*.jar</exclude>
                <!--<exclude>WEB-INF/lib/storm-*.jar</exclude> -->
                <!--<exclude>WEB-INF/lib/kafka_*.jar</exclude> -->
                <exclude>WEB-INF/lib/slf4j-simple-*.jar</exclude>
                <exclude>WEB-INF/lib/slf4j-log4j12-*.jar</exclude>
                <exclude>WEB-INF/lib/*-tests.jar</exclude>
                <exclude>WEB-INF/lib/hadoop-mapreduce-*.jar</exclude>
                <exclude>WEB-INF/lib/hadoop-minicluster-*.jar</exclude>
                <exclude>WEB-INF/lib/hadoop-yarn-*.jar</exclude>
            </excludes>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>${project.basedir}/../eagle-topology-assembly/target</directory>
            <outputDirectory>lib/topology</outputDirectory>
            <includes>
                <include>eagle-topology-*-assembly.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-security/eagle-security-userprofile/training/target</directory>
            <outputDirectory>lib/userprofile</outputDirectory>
            <includes>
                <include>eagle-security-userprofile-training-*-assembly.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/lib/userprofile/data</directory>
            <outputDirectory>lib/userprofile/data</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>${project.basedir}/../eagle-security/eagle-security-userprofile/training/target/lib</directory>
            <outputDirectory>lib/share</outputDirectory>
            <includes>
                <include>akka-*</include>
                <include>scala-library-*</include>
                <include>slf4j-*.jar</include>
                <include>log4j-*.jar</include>
                <include>commons-math3-*.jar</include>
            </includes>
            <excludes>
                <exclude>slf4j-log4j12-*.jar</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/target/lib</directory>
            <outputDirectory>lib/storm</outputDirectory>
            <includes>
                <include>storm-core-*.jar</include>
                <include>asm-*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/../eagle-external/eagle-ambari</directory>
            <outputDirectory>lib/ambari</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>
        <!-- copy hadoop metric configuration to assembly -->
        <fileSet>
            <directory>${project.basedir}/../eagle-hadoop-metric/src/main/resources</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>hadoop-metric-init.sh</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>