<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.eclipse.mylyn.docs</groupId>
        <artifactId>docs.main</artifactId>
        <version>3.0.8-SNAPSHOT</version>
        <relativePath>./pom.xml</relativePath>
    </parent>

    <artifactId>docs.build</artifactId>
    <name>Mylyn Docs: Docs Build</name>
    <packaging>pom</packaging>

    <properties>
        <docs.goal>verify</docs.goal>
        <p2.repo.local>${basedir}/.local-repo</p2.repo.local>
        <docs.build.type>none</docs.build.type>
    </properties>

    <profiles>
        <profile>
            <id>release</id>
            <properties>
                <docs.build.type>release</docs.build.type>
            </properties>
        </profile>
    </profiles>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.mylyn.docs</groupId>
            <artifactId>wikitext.ui.build</artifactId>
            <version>3.0.8-SNAPSHOT</version>
            <type>pom</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-nodeps</artifactId>
                        <version>1.7.0</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>update-targets</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <target>
                                <property name="target-file" value="${basedir}/docs/targets/docs.target"/>
                                <property name="target-file-template" value="${target-file}-template"/>
                                <delete file="${target-file}" failonerror="false"/>
                                <copy file="${target-file-template}" tofile="${target-file}"/>
                                <replaceregexp file="${target-file}" byline="true">
                                    <regexp pattern="MYLYN_DOCS_ROOT"/>
                                    <substitution expression="${basedir}"/>
                                </replaceregexp>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>remove-wikitext-from-p2-index</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <target>
                                <property name="p2-index-file" value="${p2.repo.local}/.meta/p2-artifacts.properties"/>
                                <touch file="${p2-index-file}" mkdirs="true"/>
                                <replaceregexp file="${p2-index-file}" flags="gm">
                                    <regexp pattern="^p2\.osgi\.bundle\:org\.eclipse\.mylyn\.wikitext\..*$"/>
                                    <substitution expression=""/>
                                </replaceregexp>
                                <delete includeemptydirs="true">
                                    <fileset dir="${p2.repo.local}" defaultexcludes="false">
                                        <include name="org/eclipse/mylyn/docs/**"/>
                                    </fileset>
                                    <fileset dir="${p2.repo.local}" defaultexcludes="false">
                                        <include name="p2/org/eclipse/update/feature/org.eclipse.mylyn.wikitext*/**"/>
                                    </fileset>
                                    <fileset dir="${p2.repo.local}" defaultexcludes="false">
                                        <include name="p2/osgi/bundle/org.eclipse.mylyn.wikitext*/**"/>
                                    </fileset>
                                </delete>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!--
                Maven invoker plugin is used as a way to delay Tycho target
                platform resolution, since part of the target platform is created
                as part of the build.
                -->
                <artifactId>maven-invoker-plugin</artifactId>
                <version>2.0.0</version>
                <configuration>
                    <pom>docs/pom.xml</pom>
                    <streamLogs>true</streamLogs>
                    <localRepositoryPath>.local-repo</localRepositoryPath>
                    <profiles>
                        <profile>${docs.build.type}</profile>
                    </profiles>
                    <goals>
                        <goal>clean</goal>
                        <goal>${docs.goal}</goal>
                    </goals>
                </configuration>
                <executions>
                    <execution>
                        <id>two-part-build</id>
                        <goals>
                            <goal>install</goal>
                            <!-- install to avoid stale p2 cache with locally built artifacts -->
                            <goal>run</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
