<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>com.io7m.quarrel</artifactId>
    <groupId>com.io7m.quarrel</groupId>
    <version>0.0.2</version>
  </parent>

  <artifactId>com.io7m.quarrel.documentation</artifactId>

  <name>com.io7m.quarrel.documentation</name>
  <description>Command-line argument parser (Documentation)</description>
  <url>https://www.io7m.com/software/quarrel</url>

  <properties>
    <mdep.analyze.skip>true</mdep.analyze.skip>
  </properties>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>com.io7m.quarrel.core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>com.io7m.quarrel.example</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </dependency>
    <dependency>
      <groupId>com.io7m.primogenitor</groupId>
      <artifactId>com.io7m.primogenitor.support</artifactId>
    </dependency>

    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.annotation.bundle</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.annotation.versioning</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <plugins>
      <!-- Copy documentation resources into build directory -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-documentation-resources</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/documentation/</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/resources/com/io7m/quarrel/documentation/</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>

          <execution>
            <id>copy-documentation-xml</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/documentation/</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/xhtml/com/io7m/quarrel/documentation/</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>

          <execution>
            <id>copy-documentation-resources-epub</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/epub/</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/resources/com/io7m/quarrel/documentation/</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>

          <execution>
            <id>copy-documentation-xml-epub</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/epub/</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/epub/com/io7m/quarrel/documentation/</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>

          <execution>
            <id>copy-generated-epub</id>
            <phase>site</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.parent.build.directory}/minisite/documentation/</outputDirectory>
              <resources>
                <resource>
                  <directory>${project.build.directory}/epub/</directory>
                  <includes>
                    <include>documentation.epub</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <!-- Unpack sources of dependencies -->
          <execution>
            <id>unpack-sources</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <excludes>module-info.java</excludes>
              <includeGroupIds>${project.groupId}</includeGroupIds>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/javadoc-sources</outputDirectory>
            </configuration>
          </execution>

          <execution>
            <id>unpack-config-schemas</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <excludes>module-info.java</excludes>
              <includeGroupIds>${project.groupId}</includeGroupIds>
              <includes>**/*.xsd</includes>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/documentation</outputDirectory>
            </configuration>
          </execution>

          <execution>
            <id>unpack-sources-example</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <excludes>module-info.java</excludes>
              <includeGroupIds>${project.groupId}</includeGroupIds>
              <includeArtifactIds>com.io7m.quarrel.example</includeArtifactIds>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/documentation</outputDirectory>
            </configuration>
          </execution>

          <execution>
            <id>unpack-sources-example-epub</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <excludes>module-info.java</excludes>
              <includeGroupIds>${project.groupId}</includeGroupIds>
              <includeArtifactIds>com.io7m.quarrel.example</includeArtifactIds>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/epub</outputDirectory>
            </configuration>
          </execution>

          <execution>
            <id>unpack-config-schemas-epub</id>
            <phase>package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <excludes>module-info.java</excludes>
              <includeGroupIds>${project.groupId}</includeGroupIds>
              <includes>**/*.xsd</includes>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/epub</outputDirectory>
            </configuration>
          </execution>

          <execution>
            <id>make-classpath</id>
            <phase>package</phase>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <configuration>
              <outputFile>${project.build.directory}/javadoc-classpath</outputFile>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Javadoc handling -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>javadoc</id>
            <goals>
              <goal>java</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <mainClass>com.io7m.primogenitor.support.TrivialJavadoc</mainClass>
              <arguments>
                <argument>${project.build.directory}/javadoc-sources</argument>
                <argument>${project.build.directory}/javadoc-classpath</argument>
                <argument>${project.build.directory}/documentation/apidocs</argument>
                <argument>${project.build.directory}/javadoc-log.txt</argument>
                <argument>${project.build.directory}/javadoc-options</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Generate documentation in various formats. -->
      <plugin>
        <groupId>com.io7m.xstructural</groupId>
        <artifactId>com.io7m.xstructural.maven_plugin</artifactId>
        <version>${com.io7m.xstructural.version}</version>
        <executions>
          <execution>
            <id>xhtml-single</id>
            <phase>package</phase>
            <goals>
              <goal>xhtml-single</goal>
            </goals>
            <configuration>
              <brandingFile>${project.build.directory}/documentation/brand.xml</brandingFile>
              <sourceFile>${project.build.directory}/documentation/main.xml</sourceFile>
              <outputDirectory>${project.build.directory}/documentation</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>xhtml-multi</id>
            <phase>package</phase>
            <goals>
              <goal>xhtml-multi</goal>
            </goals>
            <configuration>
              <brandingFile>${project.build.directory}/documentation/brand.xml</brandingFile>
              <sourceFile>${project.build.directory}/documentation/main.xml</sourceFile>
              <outputDirectory>${project.build.directory}/documentation</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>epub</id>
            <phase>package</phase>
            <goals>
              <goal>epub</goal>
            </goals>
            <configuration>
              <brandingFile>${project.build.directory}/epub/brand.xml</brandingFile>
              <sourceFile>${project.build.directory}/epub/main.xml</sourceFile>
              <outputDirectory>${project.build.directory}/epub</outputDirectory>
              <outputFileName>documentation.epub</outputFileName>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Produce documentation archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/documentation.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Unpack the documentation archive to the parent's generated site minisite directory. -->
      <!-- This is arguably abusive, but there appears to be no other way to achieve it. -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>truezip-maven-plugin</artifactId>
        <inherited>false</inherited>
        <executions>
          <execution>
            <id>copy-site-documentation</id>
            <goals>
              <goal>copy</goal>
            </goals>
            <phase>site</phase>
            <configuration>
              <verbose>true</verbose>
              <fileset>
                <directory>${project.build.directory}/${project.name}-${project.version}.zip/${project.name}-${project.version}/</directory>
                <outputDirectory>${project.parent.build.directory}/minisite/documentation/</outputDirectory>
              </fileset>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  
</project>
