<?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="infra-manager">
  <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"/>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset dir="target/libs"/>
    </copy>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset file="target/*.jar"/>
    </copy>
    <copy todir="target/package/conf" includeEmptyDirs="no">
      <fileset file="src/main/resources/infra-manager-env.sh"/>
      <fileset file="target/classes/infra-manager.properties"/>
      <fileset file="target/classes/log4j2.xml"/>
    </copy>
    <copy todir="target/package/bin" includeEmptyDirs="no">
      <fileset file="src/main/resources/infraManager.sh"/>
    </copy>
    <chmod file="target/package/conf/infra-manager-env.sh" perm="755"/>
    <chmod file="target/package/bin/infraManager.sh" perm="755"/>
    <tar compression="gzip" destfile="target/ambari-infra-manager.tar.gz">
      <tarfileset mode="755" dir="target/package">
        <include name="*.sh"/>
      </tarfileset>
      <tarfileset mode="664" dir="target/package">
        <exclude name="*.sh"/>
      </tarfileset>
    </tar>

  </target>

</project>