<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <formats>
        <format>tar.gz</format>
    </formats>
    <id>bin</id>
    <baseDirectory>apache-atlas-${project.version}</baseDirectory>
    <fileSets>
        <fileSet>
            <directory>target/conf/</directory>
            <outputDirectory>conf</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>../docs/target/site</directory>
            <outputDirectory>docs</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>../webapp/target/apidocs</directory>
            <outputDirectory>docs/api</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>../target/site/apidocs</directory>
            <outputDirectory>docs/apidocs</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>target/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>target/bin</directory>
            <outputDirectory>hook-bin</outputDirectory>
            <includes>
                <include>atlas_client_cmdline.py</include>
                <include>atlas_config.py</include>
                <include>atlas_kafka_setup_hook.py</include>
            </includes>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>target/hbase</directory>
            <outputDirectory>hbase</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>target/solr</directory>
            <outputDirectory>solr</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>target/zk</directory>
            <outputDirectory>zk</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>target/elasticsearch</directory>
            <outputDirectory>elasticsearch</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>../logs</directory>
            <outputDirectory>logs</outputDirectory>
            <directoryMode>0777</directoryMode>
            <excludes>
                <exclude>*</exclude>
                <exclude>**/**</exclude>
            </excludes>
        </fileSet>

        <fileSet>
            <directory>../</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>DISCLAIMER.txt</include>
                <include>NOTICE</include>
                <include>LICENSE</include>
                <include>CHANGES.txt</include>
                <include>README</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>../src/main/examples</directory>
            <outputDirectory>examples</outputDirectory>
        </fileSet>

        <!-- out-of-box-models -->
        <fileSet>
            <directory>../addons/models</directory>
            <outputDirectory>models</outputDirectory>
        </fileSet>

        <!-- addons/hive -->
        <fileSet>
            <directory>../addons/hive-bridge/src/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>../addons/hive-bridge/target/dependency/bridge</directory>
            <outputDirectory>bridge</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>../addons/hive-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>

        <!-- addons/hbase -->
        <fileSet>
            <directory>../addons/hbase-bridge/src/bin</directory>
            <outputDirectory>hook-bin</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <!-- addons/hbase -->
        <fileSet>
            <directory>../addons/hbase-bridge/target/dependency/bridge</directory>
            <outputDirectory>bridge</outputDirectory>
        </fileSet>

        <fileSet>
            <directory>../addons/hbase-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>

        <!-- addons/falcon -->
        <fileSet>
            <directory>../addons/falcon-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>

        <!-- addons/sqoop -->
        <fileSet>
            <directory>../addons/sqoop-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>

        <!-- addons/storm -->
        <fileSet>
            <directory>../addons/storm-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>

        <!-- for kafka topic setup -->
        <fileSet>
            <directory>../addons/kafka-bridge/src/bin</directory>
            <outputDirectory>hook-bin</outputDirectory>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <!-- for migration setup -->
        <fileSet>
            <directory>../tools/atlas-migration-exporter</directory>
            <outputDirectory>tools/migration-exporter</outputDirectory>
            <includes>
                <include>README</include>
                <include>*.py</include>
                <include>atlas-log4j.xml</include>
                <include>atlas-migration-*.jar</include>
                <include>migrationContext.xml</include>
            </includes>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>

        <fileSet>
            <directory>../addons/kakfa-bridge/target/dependency/bridge</directory>
            <outputDirectory>bridge</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>../addons/kakfa-bridge/target/dependency/hook</directory>
            <outputDirectory>hook</outputDirectory>
        </fileSet>
    </fileSets>

    <files>
        <file>
            <source>../webapp/target/atlas-webapp-${project.version}.war</source>
            <outputDirectory>server/webapp</outputDirectory>
            <destName>atlas.war</destName>
        </file>
    </files>
</assembly>
