<?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>

    <!-- This POM is reponsible for handling coverage reports and pushing them to Sonar -->

    <parent>
        <groupId>com.atlassian.plugins</groupId>
        <artifactId>atlassian-clientside-extensions-parent</artifactId>
        <version>2.4.2</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>atlassian-clientside-extensions-sonar</artifactId>
    <name>Atlassian Plugins - Client-side Extensions - Sonar</name>
    <description>CSE Sonar integration</description>
    <licenses>
        <license>
            <name>BSD License</name>
            <url>https://opensource.org/licenses/BSD-3-Clause</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <properties>
        <!-- Using sonar-maven-plugin to push Packages coverage -->
        <!-- Alls this sonar configuration needs to be on a specific module, otherwise it will be applied to ALL modules -->
        <sonar.projectBaseDir>${project.basedir}/../</sonar.projectBaseDir>
        <sonar.sources>${project.basedir}/../</sonar.sources>
        <sonar.inclusions>packages/*/lib/**/*.ts, packages/*/lib/**/*.tsx, demos/**/*.ts, demos/**/*.tsx, **/src/main/java/*.java</sonar.inclusions>
        <sonar.exclusions>**/__mocks__/**, **/__fixtures__/**, **/node_modules_/**, **/target/**</sonar.exclusions>
        <sonar.tests>${project.basedir}/../</sonar.tests>
        <sonar.test.inclusions>**/*.test.ts, **/*.test.tsx, **/*.spec.ts, **/src/tests/java/*.java</sonar.test.inclusions>
        <sonar.typescript.lcov.reportPaths>${project.basedir}/../${jest.report.file}</sonar.typescript.lcov.reportPaths>
        <sonar.eslint.reportPaths>${project.basedir}/../${eslint.report.paths}</sonar.eslint.reportPaths>
    </properties>

    <!-- Jacoco will only look for coverage data in dependent modules -->
    <dependencies>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-clientside-extensions-page-bootstrapper</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-clientside-extensions-runtime</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-clientside-extensions-demo</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>jacoco-report</id>
            <activation>
                <property>
                    <name>report</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <!-- Aggregate all jacoco reports -->
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>report-aggregate</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>report-aggregate</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/../${jacoco.report}</outputDirectory>
                                    <includes>
                                        <include>com/atlassian/rest/**</include>
                                        <include>com/atlassian/clientpluginsdemorefapp/**</include>
                                        <include>com/atlassian/plugin/clientsideextensions/**</include>
                                    </includes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>amps-maven-plugin</artifactId>
                <version>${amps.version}</version>
                <configuration>
                    <!--suppress UnresolvedMavenProperty -->
                    <jvmArgs>${jacoco.agent.it.argLine}</jvmArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
