<?xml version="1.0"?>
<!--
   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 xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>ambari-logsearch</artifactId>
    <groupId>org.apache.ambari</groupId>
    <version>${revision}</version>
  </parent>
  <name>Ambari Logsearch Assembly</name>
  <url>http://maven.apache.org</url>
  <modelVersion>4.0.0</modelVersion>
  <properties>
    <mapping.base.path>/usr/lib</mapping.base.path>
    <logsearch.portal.package.name>ambari-logsearch-portal</logsearch.portal.package.name>
    <logsearch.portal.mapping.path>${mapping.base.path}/ambari-logsearch-portal</logsearch.portal.mapping.path>
    <logsearch.server.dir>${project.basedir}/../ambari-logsearch-server</logsearch.server.dir>
    <logsearch.logfeeder.package.name>ambari-logsearch-logfeeder</logsearch.logfeeder.package.name>
    <logsearch.logfeeder.mapping.path>${mapping.base.path}/ambari-logsearch-logfeeder</logsearch.logfeeder.mapping.path>
    <logsearch.logfeeder.dir>${project.basedir}/../ambari-logsearch-logfeeder</logsearch.logfeeder.dir>
    <logsearch.portal.conf.mapping.path>/etc/${logsearch.portal.package.name}/conf</logsearch.portal.conf.mapping.path>
    <logsearch.logfeeder.conf.mapping.path>/etc/${logsearch.logfeeder.package.name}/conf
    </logsearch.logfeeder.conf.mapping.path>
  </properties>
  <artifactId>ambari-logsearch-assembly</artifactId>
  <profiles>

    <profile>
      <id>rpm</id>
      <properties>
        <download.solr>true</download.solr>
      </properties>
      <activation>
        <property>
          <name>build-rpm</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>rpm-maven-plugin</artifactId>
            <version>2.1.4</version>
            <configuration>
              <copyright>2012, Apache Software Foundation</copyright>
              <group>Development</group>
              <description>Maven Recipe: RPM Package.</description>
              <autoRequires>false</autoRequires>
              <prefix>/</prefix>
              <needarch>noarch</needarch>
              <targetOS>linux</targetOS>

              <version>${package-version}</version>
              <release>${package-release}</release>

              <defaultUsername>root</defaultUsername>
              <defaultGroupname>root</defaultGroupname>
            </configuration>
            <executions>
              <execution>
                <id>logsearch-portal</id>
                <phase>package</phase>
                <goals>
                  <goal>rpm</goal>
                </goals>
                <configuration>
                  <group>Development</group>
                  <name>${logsearch.portal.package.name}</name>
                  <postinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/portal/postinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postinstallScriptlet>
                  <postremoveScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/portal/postremove.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postremoveScriptlet>
                  <preinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/portal/preinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </preinstallScriptlet>
                  <mappings>
                    <mapping>
                      <directory>${logsearch.portal.mapping.path}</directory>
                      <sources>
                        <source>
                          <location>${logsearch.server.dir}/target/package</location>
                          <excludes>
                            <exclude>libs/checkstyle*.jar</exclude>
                          </excludes>
                        </source>
                      </sources>
                    </mapping>
                  </mappings>
                </configuration>
              </execution>
              <execution>
                <id>logsearch-logfeeder</id>
                <phase>package</phase>
                <goals>
                  <goal>rpm</goal>
                </goals>
                <configuration>
                  <group>Development</group>
                  <name>${logsearch.logfeeder.package.name}</name>
                  <postinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/logfeeder/postinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postinstallScriptlet>
                  <postremoveScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/logfeeder/postremove.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postremoveScriptlet>
                  <preinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/logfeeder/preinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </preinstallScriptlet>
                  <mappings>
                    <mapping>
                      <directory>${logsearch.logfeeder.mapping.path}</directory>
                      <sources>
                        <source>
                          <location>${logsearch.logfeeder.dir}/target/package</location>
                          <excludes>
                            <exclude>libs/checkstyle*.jar</exclude>
                          </excludes>
                        </source>
                      </sources>
                    </mapping>
                  </mappings>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>deb</id>

      <activation>
        <property>
          <name>build-deb</name>
        </property>
      </activation>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>

            <executions>
              <execution>
                <id>copy-resources</id>
                <phase>package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/resources/deb</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.basedir}/src/main/package/deb</directory>
                      <excludes>
                        <exclude>portal/postinst</exclude>
                        <exclude>portal/postrm</exclude>
                        <exclude>portal/preinstall</exclude>
                        <exclude>logfeeder/postinst</exclude>
                        <exclude>logfeeder/postrm</exclude>
                        <exclude>logfeeder/preinstall</exclude>
                      </excludes>
                      <filtering>false</filtering>
                    </resource>
                    <resource>
                      <directory>${project.basedir}/src/main/package/deb</directory>
                      <includes>
                        <include>portal/postinst</include>
                        <include>portal/postrm</include>
                        <include>portal/preinstall</include>
                        <include>logfeeder/postinst</include>
                        <include>logfeeder/postrm</include>
                        <include>logfeeder/preinstall</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.vafer</groupId>
            <artifactId>jdeb</artifactId>
            <version>1.4</version>
            <executions>
              <execution>
                <id>jdeb-portal</id>
                <phase>package</phase>
                <goals>
                  <goal>jdeb</goal>
                </goals>
                <configuration>
                  <controlDir>${basedir}/src/main/package/deb/portal</controlDir>
                  <deb>${basedir}/target/${logsearch.portal.package.name}_${package-version}-${package-release}.deb
                  </deb>
                  <skip>false</skip>
                  <skipPOMs>false</skipPOMs>
                  <dataSet>
                    <data>
                      <src>${logsearch.server.dir}/target/ambari-logsearch-portal.tar.gz</src>
                      <type>archive</type>
                      <mapper>
                        <prefix>${logsearch.portal.mapping.path}</prefix>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                      </mapper>
                      <excludes>
                        libs/checkstyle*.jar
                      </excludes>
                    </data>
                  </dataSet>
                </configuration>
              </execution>

              <execution>
                <id>jdeb-logfeeder</id>
                <phase>package</phase>
                <goals>
                  <goal>jdeb</goal>
                </goals>
                <configuration>
                  <controlDir>${basedir}/src/main/package/deb/logfeeder</controlDir>
                  <deb>${basedir}/target/${logsearch.logfeeder.package.name}_${package-version}-${package-release}.deb
                  </deb>
                  <skip>false</skip>
                  <skipPOMs>false</skipPOMs>
                  <dataSet>
                    <data>
                      <src>${logsearch.logfeeder.dir}/target/ambari-logsearch-logfeeder.tgz</src>
                      <type>archive</type>
                      <mapper>
                        <prefix>${logsearch.logfeeder.mapping.path}</prefix>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                      </mapper>
                      <excludes>
                        libs/checkstyle*.jar
                      </excludes>
                    </data>
                  </dataSet>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-logsearch-server</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-logsearch-web</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-logsearch-logfeeder</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

</project>
