<?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>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>

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