<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
   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.
-->
<project basedir="." default="build" name="logfeeder">
  <property environment="env"/>
  <property name="debuglevel" value="source,lines,vars"/>
  <dirname property="builddir" file="build.xml"/>
  <property name="target" value="1.8"/>
  <property name="source" value="1.8"/>
  <target name="init">
  </target>
  <target name="build"/>

  <target name="package">
    <delete dir="target/package"/>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset dir="target/libs"/>
      <fileset file="target/ambari-logsearch-logfeeder*.jar"/>
    </copy>
    <copy todir="target/package/bin" includeEmptyDirs="no">
      <fileset file="src/main/scripts/logfeeder.sh"/>
    </copy>
    <copy todir="target/package/conf" includeEmptyDirs="no">
      <fileset file="target/classes/grok-patterns"/>
      <fileset file="target/classes/log4j2.yml"/>
      <fileset file="target/classes/logfeeder.properties"/>
      <fileset file="target/classes/alias_config.json"/>
      <fileset file="src/main/scripts/logfeeder-env.sh"/>
    </copy>
    <chmod file="target/package/bin/logfeeder.sh" perm="755"/>
    <chmod file="target/package/conf/logfeeder-env.sh" perm="755"/>
    <tar compression="gzip" destfile="target/ambari-logsearch-logfeeder.tgz">
      <tarfileset mode="755" dir="target/package">
        <include name="**/*.sh"/>
      </tarfileset>
      <tarfileset mode="664" dir="target/package">
        <exclude name="**/*.sh"/>
      </tarfileset>
    </tar>
    <copy todir="target" >
      <fileset dir="../jenkins/containers" includes="**"/>
    </copy>
    <copy todir="target/docker-logsearch-logfeeder/logfeeder" >
      <fileset dir="target/package" includes="**"/>
    </copy>
  </target>
</project>
