<?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/maven-assembly-plugin/assembly/1.1.2"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.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>
  </fileSets>
  <files>
    <file>
      <source>${basedir}/src/main/resources/log4j.xml</source>
      <outputDirectory>lib</outputDirectory>
    </file>
    <!-- filtered=true, so we do variable expansion so the yarn package path
      always points to the correct spot on any machine -->
    <file>
      <source>${basedir}/src/main/config/wikipedia-feed.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/wikipedia-parser.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/wikipedia-stats.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/wikipedia-application.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/tumbling-pageview-counter.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/pageview-sessionizer.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/pageview-filter.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </file>
    <file>
      <source>${basedir}/src/main/config/pageview-adclick-joiner.properties</source>
      <outputDirectory>config</outputDirectory>
      <filtered>true</filtered>
    </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>org.apache.samza:samza-core_2.11</include>
        <include>org.apache.samza:samza-kafka_2.11</include>
        <include>org.apache.samza:samza-yarn_2.11</include>
        <include>org.apache.samza:samza-kv-rocksdb_2.11</include>
        <include>org.apache.samza:samza-log4j</include>
        <include>org.apache.samza:hello-samza</include>
        <include>org.slf4j:slf4j-log4j12</include>
        <include>org.apache.kafka:kafka_2.11</include>
        <include>org.apache.hadoop:hadoop-hdfs</include>
      </includes>
      <useTransitiveFiltering>true</useTransitiveFiltering>
    </dependencySet>
  </dependencySets>
</assembly>
