<?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/maven-v4_0_0.xsd">
  <parent>
    <groupId>org.apache.ambari</groupId>
    <artifactId>ambari-project</artifactId>
    <version>2.0.2.0</version>
    <relativePath>../ambari-project</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>ambari-web</artifactId>
  <packaging>pom</packaging>
  <name>Ambari Web</name>
  <version>2.0.2.0</version>
  <description>Ambari Web</description>
  <properties>
    <ambari.dir>${project.parent.parent.basedir}</ambari.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <id>parse-version</id>
            <phase>validate</phase>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
          <execution>
            <id>regex-property</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>ambariVersion</name>
              <value>${project.version}</value>
              <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
              <replacement>$1.$2.$3</replacement>
              <failIfNoMatch>false</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>rpm-maven-plugin</artifactId>
        <version>2.0.1</version>
        <executions>
          <execution>
            <!-- unbinds rpm creation from maven lifecycle -->
            <phase>none</phase>
            <goals>
              <goal>attached-rpm</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <copyright>2012, Apache Software Foundation</copyright>
          <group>Development</group>
          <description>Maven Recipe: RPM Package.</description>
          <mappings/>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>clean</id>
            <phase>clean</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="ambari-web-clean">
                <exec dir="${basedir}" executable="${executable.rmdir}">
                  <arg value="${args.rm.clean}"/>
                  <arg value="public"/>
                  <arg value="node_modules"/>
                </exec>
                <exec dir="${basedir}" executable="${executable.mkdir}">
                  <arg value="${args.mkdir.clean}"/>
                </exec>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>compile</id>
            <phase>compile</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="ambari-web-compile">
                <exec dir="${basedir}" executable="${executable.npm}" failonerror="true">
                  <arg value="${args.npm.install}"/>
                </exec>
                <exec dir="${basedir}" executable="${executable.brunch}" failonerror="true">
                  <arg value="${args.brunch.build}"/>
                </exec>
                <!-- sets Ambari version to make it accessible from code -->
                <exec dir="${basedir}" executable="${executable.shell}" failonerror="true">
                  <arg value="${basedir}${dirsep}set-ambari-version.${fileextension.shell}"/>
                  <arg value="${ambariVersion}"/>
                </exec>
                <!-- sets default stack and version to use for install -->
                <exec dir="${basedir}" executable="${executable.shell}" failonerror="true">
                  <arg value="${basedir}${dirsep}set-default-stack-version.${fileextension.shell}"/>
                  <arg value="${defaultStackVersion}"/>
                </exec>
                <!-- enables experimental features if enableExperimental is set to true -->
                <exec dir="${basedir}" executable="${executable.shell}" failonerror="true">
                  <arg value="${basedir}${dirsep}toggle-experimental.${fileextension.shell}"/>
                  <arg value="${enableExperimental}"/>
                </exec>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>test</id>
            <phase>test</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="ambari-web unit tests" unless="${skipTests}">
                <exec dir="${basedir}" executable="${executable.npm}" failonerror="true">
                  <arg value="${args.npm.test}"/>
                </exec>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>gzip ambari-web content</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="ambari-web-package">
                <exec dir="${basedir}" executable="${executable.gzip}" failonerror="true">
                  <arg value="-f"/>
                  <arg value="public/javascripts/app.js"/>
                  <arg value="public/javascripts/vendor.js"/>
                  <arg value="public/stylesheets/app.css"/>
                </exec>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>.idea/**</exclude>
            <exclude>package.json</exclude>
            <exclude>public/**</exclude>
            <exclude>public-static/**</exclude>
            <exclude>app/assets/**</exclude>
            <exclude>vendor/**</exclude>
            <exclude>node_modules/**</exclude>
            <exclude>npm-debug.log</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.vafer</groupId>
        <artifactId>jdeb</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <phase>none</phase>
            <goals>
              <goal>jdeb</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <skip>true</skip>
          <submodules>false</submodules>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>windows</id>
      <activation>
        <os>
          <family>win</family>
        </os>
      </activation>
      <properties>
        <envClassifier>win</envClassifier>
        <dirsep>\</dirsep>
        <executable.brunch>cmd</executable.brunch>
        <args.brunch.build>/C brunch build</args.brunch.build>
        <executable.gzip>gzip</executable.gzip>
        <executable.mkdir>cmd</executable.mkdir>
        <args.mkdir.clean>/C mkdir public</args.mkdir.clean>
        <executable.npm>cmd</executable.npm>
        <args.npm.install>/C npm install</args.npm.install>
        <args.npm.test>/C npm test</args.npm.test>
        <executable.rmdir>cmd</executable.rmdir>
        <args.rm.clean>/C rmdir /S /Q</args.rm.clean>
        <executable.shell>cmd</executable.shell>
        <fileextension.shell>cmd</fileextension.shell>
      </properties>
    </profile>
    <profile>
      <id>linux</id>
      <activation>
        <os>
          <family>unix</family>
        </os>
      </activation>
      <properties>
        <envClassifier>linux</envClassifier>
        <dirsep>/</dirsep>
        <executable.brunch>brunch</executable.brunch>
        <args.brunch.build>build</args.brunch.build>
        <executable.gzip>gzip</executable.gzip>
        <executable.mkdir>mkdir</executable.mkdir>
        <args.mkdir.clean>public</args.mkdir.clean>
        <executable.npm>npm</executable.npm>
        <args.npm.install>install</args.npm.install>
        <args.npm.test>test</args.npm.test>
        <executable.rmdir>rm</executable.rmdir>
        <args.rm.clean>-rf</args.rm.clean>
        <executable.shell>sh</executable.shell>
        <fileextension.shell>sh</fileextension.shell>
      </properties>
    </profile>
  </profiles>
</project>
