<?xml version="1.0" encoding="UTF-8"?>
<!--
   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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>parent-pom</artifactId>
    <version>6</version>
    <relativePath>../parent-pom</relativePath>
  </parent>

  <artifactId>uima-eclipse-composite-update-site</artifactId>
  <packaging>pom</packaging>
  <version>2</version>

  <name>Apache UIMA Eclipse: ${project.artifactId}</name>
  <description>The UIMA Eclipse composite update site</description>
  <url>${uimaWebsiteUrl}</url>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/build/trunk/uima-eclipse-composite-update-site
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/build/trunk/uima-eclipse-composite-update-site
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/build/trunk/uima-eclipse-composite-update-site
    </url>
  </scm>

  <properties>
    <uimaScmRoot>uimaj</uimaScmRoot>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
    <eclipseUpdateSite>${project.build.directory}/eclipse-update-site</eclipseUpdateSite>
    <distsvnroot>https://dist.apache.org/</distsvnroot>
<!--     <distsvnroot>file:///svn/t/</distsvnroot>    -->
    
  </properties>

  <build>
    <plugins>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>BuildCompositeUpdateSite</id>
            <phase>package</phase>
            <configuration>
              <target>
                <taskdef name="if" classname="net.sf.antcontrib.logic.IfTask"/>
                
                <!-- if the property uima-maven-build-eclipse-home is set, use it, otherwise don't -->
                <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
                  <not>
                    <equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
                  </not>
                </condition>

                <property environment="envVar" />
                <condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
                  <isset property="envVar.ECLIPSE_HOME" />
                </condition>

                <fail unless="eclipse.home"
                  message="********** Please set up and use an ant property eclipse.home set to an Eclipse installation at level 3.3 or later, e.g. c:/eclipses/3.3/eclipse" />

                !<!-- The only reason to check out from SVN these 2 files and their signatures is to set things up
                      so the relase can be done via a svn swtich (from dev to release) and then a commit 
                      Because Jars are being released, it's unlikely there is any diff encoding that SVN can do -->
                      
                <!-- =================================== -->
                <!-- SVN remote copy from release to dev -->
                <!--   and checkout                      -->
                <!-- =================================== -->
                <echo>copying svn dist release to dev for eclipse composite update site version ${project.version}</echo>
                <exec executable="svn">
                  <arg value="delete" />
                  <arg value="${distsvnroot}repos/dist/dev/uima//eclipse-update-site/composite-update-site/${project.version}" />
                  <arg value="--force"/> 
                  <arg value="-m"/>
                  <arg value="prepare for building eclipse composite update site ${project.version}"/>
                </exec> 

                <exec executable="svn">
                  <arg value="copy" />
                  <arg value="${distsvnroot}repos/dist/release/uima/eclipse-update-site/" />
                  <arg value="${distsvnroot}repos/dist/dev/uima/eclipse-update-site/composite-update-site/${project.version}" />
                  <arg value="--parents"/>
                  <arg value="-m"/>
                  <arg value="prepare for building eclipse composite update site ${project.version}"/>
                </exec> 

                <echo>checking out eclipse composite update site from dist ...dev...</echo>
                <delete dir="${eclipseUpdateSite}"/>
                <exec executable="svn">
                  <arg value="checkout" />
                  <arg value="--quiet" />
                  <arg value="--depth" />
                  <arg value="immediates"/>
                  <arg value="${distsvnroot}repos/dist/dev/uima/eclipse-update-site/composite-update-site/${project.version}" />
                  <arg value="${eclipseUpdateSite}"/>
                </exec> 

                <!-- We run an internal Ant this way in order to have the Ant impl have the special
                     defined tasks for p2 -->
                <java jar="${eclipse-equinox-launcher}" fork="true" failonerror="true" maxmemory="256m">
                  <arg line="-application org.eclipse.ant.core.antRunner" />
                  <arg line="-f buildCompositeRepository.xml" />
                  <arg line="-verbose"/>
                </java>
                
                <!-- ========================================== -->
                <!--   If apache-release, do checksums and sign -->
                <!-- ========================================== -->
                          
                <if>
                  <equals arg1="${isApacheRelease}" arg2="true"/>
                  <then>

                    <echo message="Generating checksums for artifacts.jar and content.jar"/>
                    <checksum algorithm="sha1" format="MD5SUM">
                      <fileset dir="${eclipseUpdateSite}">
                        <include name="*.jar.pack.gz" />
                        <include name ="*.jar" />
                      </fileset>
                    </checksum>
                    <checksum algorithm="md5" format="MD5SUM">
                      <fileset dir="${eclipseUpdateSite}">
                        <include name ="*.jar.pack.gz" />
                        <include name ="*.jar" />
                      </fileset>
                    </checksum>

                    <echo message="Generating gpg signatures for artifacts.jar and content.jar"/>
                    <apply executable="gpg" dir="${eclipseUpdateSite}"> 
                      <arg value="--detach-sign"/>
                      <arg value="--armor"/>
                      <!-- batch flag needed to avoid gpg hang up -->
                      <arg value="--batch"/>
                      <fileset dir="${eclipseUpdateSite}">
                        <include name="*.jar"/>
                        <include name="*.jar.pack.gz"/>
                      </fileset>
                    </apply> 
                    
                  </then>                     
                </if>          

              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
    </plugins>
  </build>

</project>