<?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>
        <format>zip</format>
        <format>dir</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>../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>

        <!-- addons/hdfs-model -->
        <fileSet>
            <directory>../addons/hdfs-model/target/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>

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

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

        <fileSet>
            <directory>../addons/falcon-bridge/target/models</directory>
            <outputDirectory>models</outputDirectory>
        </fileSet>

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

        <fileSet>
            <directory>../addons/sqoop-bridge/target/models</directory>
            <outputDirectory>models</outputDirectory>
        </fileSet>

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

        <fileSet>
            <directory>../addons/storm-bridge/target/models</directory>
            <outputDirectory>models</outputDirectory>
        </fileSet>

        <!-- for kafka topic setup -->
        <fileSet>
            <directory>../notification/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>
