<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>ambari-logsearch</artifactId>
    <groupId>org.apache.ambari</groupId>
    <version>2.7.6.0.0</version>
  </parent>
  <name>Ambari Logsearch Assembly</name>
  <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>
              <license>2012, Apache Software Foundation</license>
              <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>
            <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>
