<?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="http://maven.apache.org/plugins/assembly/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>dist</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${basedir}</directory>
            <includes>
                <include>README*</include>
                <include>LICENSE*</include>
                <include>NOTICE*</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${basedir}/src/main/config</directory>
            <includes>
                <include>*.properties</include>
            </includes>
            <outputDirectory>config</outputDirectory>
            <!-- filtered=true, so we do variable expansion so the yarn package path
            always points to the correct spot on any machine -->
            <filtered>true</filtered>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>${basedir}/src/main/resources/log4j.xml</source>
            <outputDirectory>lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/bash/run-beam-yarn.sh</source>
            <outputDirectory>bin</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/bash/run-beam-standalone.sh</source>
            <outputDirectory>bin</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/bash/run-beam-container.sh</source>
            <outputDirectory>bin</outputDirectory>
        </file>
    </files>
    <dependencySets>
        <dependencySet>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>org.apache.samza:samza-shell:tgz:dist:*</include>
            </includes>
            <fileMode>0744</fileMode>
            <unpack>true</unpack>
        </dependencySet>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>beam-runners-samza</include>
                <include>org.apache.samza:samza-beam-examples</include>
                <include>org.apache.samza:samza-yarn_2.11</include>
                <include>org.apache.samza:samza-log4j</include>
            </includes>
            <useTransitiveFiltering>true</useTransitiveFiltering>
        </dependencySet>
    </dependencySets>
</assembly>