<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2011, Red Hat, Inc. and others

   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html

   Contributors:
       Red Hat Incorporated - initial implementation
-->

<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.eclipse.linuxtools.releng</groupId>
    <artifactId>linuxtools-releng-parent</artifactId>
    <version>1.2.0-SNAPSHOT</version>
  </parent>

  <artifactId>org.eclipse.linuxtools.releng-site</artifactId>
  <packaging>eclipse-repository</packaging>

  <properties>
    <relengTargetDir>${basedir}/target_save</relengTargetDir>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-p2-publisher-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
          <publishArtifacts>true</publishArtifacts>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-p2-repository-plugin</artifactId>
        <version>${tycho-version}</version>
	<executions>
          <execution>
            <id>default-archive-repository</id>
            <phase>install</phase>
            <goals>
              <goal>archive-repository</goal>
            </goals>
            <configuration>
              <finalName>${project.artifactId}</finalName>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!--
           Clean out contents of backed up target folder.
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <goals>
              <goal>exec</goal>
            </goals>
            <phase>install</phase>
            <configuration>
              <executable>rm</executable>
              <arguments>
                <argument>-rf</argument>
                <argument>${relengTargetDir}</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!--
           Packaging type 'eclipse-repository' performs a clean on the
           'initialize' phase. The maven-javadoc-plugin executes
           'generate-sources', which will also trigger an 'initialize' (clean).

           Copy the contents of our target folder to another location so
           that it's available for later use.
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>save-releng-target-dir</id>
            <phase>install</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
	      <outputDirectory>${relengTargetDir}</outputDirectory>
	      <resources>
	        <resource>
                    <directory>${project.build.directory}</directory>
	        </resource>
	      </resources>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>prepare-promotion</id>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <!-- copy scripts to build directory and execute -->
                <copy file="p2.xsl" todir="${project.build.directory}"/>
                <copy file="promoter.xml" todir="${project.build.directory}"/>
                <ant antfile="${project.build.directory}/promoter.xml"/>
              </tasks>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <name>Eclipse Linux Tools p2 Repository</name>
  <!-- see http://issues.sonatype.org/browse/TYCHO-313 -->
  <version>1.2.0-SNAPSHOT</version>

  <profiles>
    <profile>
     <id>build-server</id>
     <build>
       <plugins>
         <plugin>
           <groupId>org.eclipse.dash.maven</groupId>
           <artifactId>eclipse-signing-maven-plugin</artifactId>
           <version>1.0.5</version>
           <executions>
             <execution>
               <id>pack</id>
               <configuration>
                 <inputFile>${relengTargetDir}/org.eclipse.linuxtools.releng-site.zip</inputFile>
               </configuration>
               <phase>install</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
             <execution>
               <id>sign</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/org.eclipse.linuxtools.releng-site.zip</inputFile>
                 <signerInputDirectory>/home/data/httpd/download-staging.priv/linuxtools</signerInputDirectory>
               </configuration>
               <phase>install</phase>
               <goals>
                 <goal>sign</goal>
               </goals>
             </execution>
             <execution>
               <id>repack</id>
               <configuration>
                 <inputFile>${project.build.directory}/signed/site_assembly.zip</inputFile>
               </configuration>
               <phase>install</phase>
               <goals>
                 <goal>pack</goal>
               </goals>
             </execution>
             <execution>
               <id>fixCheckSums</id>
               <configuration>
                 <inputFile>${project.build.directory}/packed/site_assembly.zip</inputFile>
               </configuration>
               <phase>install</phase>
               <goals>
                 <goal>fixCheckSums</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
         <plugin>
             <artifactId>maven-antrun-plugin</artifactId>
             <executions>
               <execution>
                 <id>deploy</id>
                 <phase>install</phase>
                 <goals>
                   <goal>run</goal>
                 </goals>
                 <configuration>
                   <tasks>
                     <delete includeemptydirs="false">
                       <fileset
                         dir="/home/data/httpd/download.eclipse.org/linuxtools/updates-nightly">
                         <include name="**" />
                       </fileset>
                     </delete>
                     <copy includeemptydirs="false"
                       todir="/home/data/httpd/download.eclipse.org/linuxtools/updates-nightly">
                       <fileset dir="target/checksumFix">
                         <include name="**" />
                       </fileset>
                     </copy>
                   </tasks>
                 </configuration>
               </execution>
             </executions>
           </plugin>
    </plugins>
  </build>
  </profile>
  </profiles>

</project>
