<?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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cayenne-asciidoc-parent</artifactId>
        <groupId>org.apache.cayenne.docs</groupId>
        <version>4.1.1</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>upgrade-guide</artifactId>
    <name>${project.artifactId}: Asciidoc - Cayenne New Features and Upgrade Guide</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.cayenne.docs</groupId>
                        <artifactId>cayenne-asciidoc-extension</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                </dependencies>

                <executions>
                    <!-- generate "embeddable" html content with front matter and without header/footer/styles -->
                    <execution>
                        <id>asciidoctor-html-web</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>html5</backend>
                            <headerFooter>false</headerFooter> <!-- do not generate header and footer -->
                            <outputDirectory>${project.build.directory}/tmp/</outputDirectory>
                            <extensions>
                                <extension>
                                    <className>org.apache.cayenne.asciidoc.CayennePostProcessor</className>
                                </extension>
                            </extensions>
                            <attributes>
                                <toc>auto</toc>
                            </attributes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>assembly</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctor-maven-plugin</artifactId>
                        <executions>
                            <!-- generate standalone html help -->
                            <execution>
                                <id>asciidoctor-html-standalone</id>
                                <phase>${build.docs}</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <backend>html5</backend>
                                    <sourceHighlighter>coderay</sourceHighlighter>
                                    <embedAssets>true</embedAssets>
                                    <attributes>
                                        <toc>left</toc>
                                    </attributes>
                                </configuration>
                            </execution>

                            <!-- generate PDF -->
                            <execution>
                                <id>generate-pdf-doc</id>
                                <phase>${build.docs}</phase>
                                <goals>
                                    <goal>process-asciidoc</goal>
                                </goals>
                                <configuration>
                                    <backend>pdf</backend>
                                    <sourceHighlighter>coderay</sourceHighlighter>
                                    <attributes>
                                        <pagenums />
                                        <toc />
                                    </attributes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>