<?xml version="1.0"?>
<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">
    <parent>
        <artifactId>keycloak-parent</artifactId>
        <groupId>org.keycloak</groupId>
        <version>17.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>keycloak-themes</artifactId>
    <name>Keycloak Themes</name>
    <description />
    <packaging>jar</packaging>

    <properties>
        <dir.common>src/main/resources/theme/keycloak/common/resources</dir.common>
        <dir.account2>src/main/resources/theme/keycloak.v2/account/src</dir.account2>
        <args.npm.install>ci --no-optional --ignore-scripts</args.npm.install>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${dir.account2}/web_modules</directory>
                        </fileset>
                        <fileset>
                            <directory>${dir.common}/web_modules</directory>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <executions>
                    <!-- Download NPM tools -->
                    <execution>
                        <id>setup-node</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>initialize</phase>
                    </execution>
                    <!-- Compile stuff -->
                    <execution>
                        <id>compile-account2</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <workingDirectory>${dir.account2}</workingDirectory>
                            <arguments>run build --scripts-prepend-node-path</arguments>
                        </configuration>
                    </execution>
                    <!-- Download NPM packages -->
                    <execution>
                        <id>npm-install-account2</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <configuration>
                            <workingDirectory>${dir.account2}</workingDirectory>
                            <arguments>${args.npm.install}</arguments>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <nodeVersion>${node.version}</nodeVersion>
                    <installDirectory>${project.basedir}</installDirectory>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/node_modules/rcue/**</exclude>
                    <exclude>**/node_modules/**/node_modules/**</exclude>
                    <exclude>**/minimist/**</exclude>
                    <exclude>**/mkdirp/**</exclude>
                    <exclude>**/package.json</exclude>
                    <exclude>**/package-lock.json</exclude>
                    <exclude>**/component.json</exclude>
                    <exclude>**/composer.json</exclude>
                    <exclude>**/npm-shrinkwrap.json</exclude>
                    <exclude>**/select2.jquery.json</exclude>
                    <exclude>**/*.markdown</exclude>
                    <exclude>**/*.swf</exclude>
                    <exclude>**/*.sh</exclude>
                    <exclude>**/.bin/**</exclude>
                    <exclude>**/bin/**</exclude>
                    <exclude>**/build/**</exclude>
                    <exclude>**/docs/**</exclude>
                    <exclude>**/demo/**</exclude>
                    <exclude>**/devtools/**</exclude>
                    <exclude>**/example/**</exclude>
                    <exclude>**/examples/**</exclude>
                    <exclude>**/grunt/**</exclude>
                    <exclude>**/less/**</exclude>
                    <exclude>**/sass/**</exclude>
                    <exclude>**/scss/**</exclude>
                    <exclude>**/jquery/src/**</exclude>
                    <exclude>**/angular-treeview/src/**</exclude>
                    <exclude>**/test/**</exclude>
                    <exclude>**/tests/**</exclude>
                    <exclude>**/_config.yml</exclude>
                    <exclude>**/api.md</exclude>
                    <exclude>**/AUTHORS.txt</exclude>
                    <exclude>**/CHANGELOG.md</exclude>
                    <exclude>**/CONTRIBUTING.md</exclude>
                    <exclude>**/HELP-US-OUT.txt</exclude>
                    <exclude>**/README.md</exclude>
                    <exclude>**/Gruntfile.js</exclude>
                    <exclude>**/Gemfile*</exclude>
                    <exclude>**/.*</exclude>

                    <!-- Remove once rcue stops shipping this file -->
                    <exclude>**/git-Logo.svg</exclude>

                    <exclude>**/keycloak.v2/account/src/**</exclude>
                </excludes>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>admin-preview</id>
            <dependencies>
                <dependency>
                    <groupId>org.keycloak</groupId>
                    <artifactId>keycloak-admin-ui</artifactId>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>unpack</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>unpack</goal>
                                </goals>
                                <configuration>
                                    <artifactItems>
                                        <artifactItem>
                                            <groupId>org.keycloak</groupId>
                                            <artifactId>keycloak-admin-ui</artifactId>
                                            <type>jar</type>
                                            <overWrite>true</overWrite>
                                            <outputDirectory>${project.build.directory}/classes/theme/keycloak.v2</outputDirectory>
                                        </artifactItem>
                                    </artifactItems>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>community</id>
            <activation>
                <property>
                    <name>!product</name>
                </property>
            </activation>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-community</directory>
                    </resource>
                </resources>
            </build>
        </profile>
        <profile>
            <id>product</id>
            <activation>
                <property>
                    <name>product</name>
                </property>
            </activation>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources-product</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/node_modules/rcue/**</include>
                        </includes>
                    </resource>
                </resources>
            </build>
        </profile>

        <profile>
            <id>npm-update</id>
            <build>
                <plugins>
                    <!-- Download packages -->
                    <plugin>
                        <groupId>com.github.eirslett</groupId>
                        <artifactId>frontend-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>npm-install</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>npm</goal>
                                </goals>
                                <configuration>
                                    <workingDirectory>${dir.common}</workingDirectory>
                                    <arguments>install -P -E --no-optional --ignore-scripts --no-bin-links --no-shrinkwrap --no-package-lock</arguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Clean downloaded packages from NPM -->
                    <plugin>
                        <artifactId>maven-clean-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>clean-all</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>clean</goal>
                                </goals>
                                <configuration>
                                    <filesets>
                                        <fileset>
                                            <directory>${dir.common}/node_modules</directory>
                                        </fileset>
                                    </filesets>
                                </configuration>
                            </execution>
                            <execution>
                                <id>clean-downloaded</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>clean</goal>
                                </goals>
                                <configuration>
                                    <filesets>
                                        <fileset>
                                            <directory>${dir.common}/node_modules/angular-translate/node_modules/</directory>
                                        </fileset>
                                        <fileset>
                                            <directory>${dir.common}/node_modules/patternfly/node_modules/</directory>
                                        </fileset>
                                        <fileset>
                                            <directory>${dir.common}/node_modules/rcue/node_modules/</directory>
                                        </fileset>
                                        <fileset>
                                            <directory>${dir.common}/node_modules/minimist</directory>
                                        </fileset>
                                        <fileset>
                                            <directory>${dir.common}/node_modules/mkdirp</directory>
                                        </fileset>
                                    </filesets>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
