<?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="logsearch">
  <property environment="env"/>
  <property name="debuglevel" value="source,lines,vars"/>
  <dirname property="builddir" file="build.xml"/>
  <property name="target" value="1.7"/>
  <property name="source" value="1.7"/>
  <target name="init">
  </target>
  <target name="build"/>

  <target name="package">
    <delete dir="target/package"/>
    <delete dir="target/migrate"/>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset dir="target/libs"/>
    </copy>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset file="target/*.jar"/>
    </copy>
    <mkdir dir="target/migrate"/>
    <mkdir dir="target/migrate/data"/>
    <get src="${lucene6-core.url}" dest="target/migrate/${lucene6-core-jar.name}" usetimestamp="true"/>
    <get src="${lucene6-backward-codecs.url}" dest="target/migrate/${lucene6-backward-codecs-jar.name}" usetimestamp="true"/>
    <copy todir="target/package/migrate" includeEmptyDirs="no">
      <fileset file="target/migrate/*.jar"/>
      <fileset file="target/package/libs/lucene-core-${solr.version}.jar"/>
      <fileset file="target/package/libs/lucene-backward-codecs-${solr.version}.jar"/>
      <fileset file="src/main/resources/managed-schema"/>
      <fileset file="src/main/resources/managed-schema"/>
    </copy>
    <copy todir="target/package/migrate/data" includeEmptyDirs="no">
      <fileset file="src/main/resources/data/security-without-authr.json"/>
    </copy>
    <copy todir="target/package" includeEmptyDirs="no">
      <fileset file="src/main/resources/solrCloudCli.sh"/>
      <fileset file="src/main/resources/solrIndexHelper.sh"/>
      <fileset file="src/main/resources/ambariSolrMigration.sh"/>
      <fileset file="src/main/python/solrDataManager.py"/>
      <fileset file="src/main/python/migrationHelper.py"/>
      <fileset file="src/main/python/migrationConfigGenerator.py"/>
    </copy>
    <copy todir="target/package" includeEmptyDirs="no">
      <fileset file="src/main/resources/log4j.properties"/>
    </copy>
    <chmod file="target/package/*.sh" perm="755"/>
    <chmod file="target/package/*.py" perm="755"/>
    <tar compression="gzip" destfile="target/ambari-infra-solr-client.tar.gz">
      <tarfileset mode="755" dir="target/package">
        <include name="*.sh"/>
        <include name="*.py"/>
      </tarfileset>
      <tarfileset mode="664" dir="target/package">
        <exclude name="*.sh"/>
        <exclude name="*.py"/>
      </tarfileset>
    </tar>

  </target>

  <target description="Build all projects which reference this project. Useful to propagate changes."
          name="build-refprojects"/>
</project>
