<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.myfaces.tobago</groupId>
    <artifactId>tobago</artifactId>
    <version>5.0.0-SNAPSHOT</version>
  </parent>
  <packaging>pom</packaging>
  <name>Tobago Themes</name>
  <artifactId>tobago-theme</artifactId>

  <properties>
    <theme.name>undefined-theme-name</theme.name>
  </properties>

  <modules>
    <module>tobago-theme-standard</module>
    <module>tobago-theme-scarborough</module>
    <module>tobago-theme-speyside</module>
    <module>tobago-theme-roxborough</module>
    <module>tobago-theme-charlotteville</module>
  </modules>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>META-INF/tobago-config.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
<!--  todo: can be removed, after find a npm way for the roxborough fonts       -->
        <directory>src/main/resources/META-INF/resources/tobago/${theme.name}</directory>
        <excludes>
          <exclude>**/_version/**</exclude>
        </excludes>
        <filtering>false</filtering>
        <targetPath>META-INF/resources/tobago/${theme.name}</targetPath>
      </resource>
      <resource>
        <!--  todo: can be removed, after find a npm way for the roxborough fonts       -->
        <directory>src/main/resources/META-INF/resources/tobago/${theme.name}/_version</directory>
        <filtering>false</filtering>
        <targetPath>META-INF/resources/tobago/${theme.name}/${project.version}</targetPath>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>copy the result to target</id>
            <phase>process-resources</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>
                ${project.build.outputDirectory}/META-INF/resources/tobago/${theme.name}/${project.version}
              </outputDirectory>
              <resources>
                <resource>
                  <directory>npm/dist</directory>
                  <includes>
                    <include>css/*</include>
                    <include>js/tobago.js</include>
                    <include>js/tobago.js.map</include>
                  </includes>
                </resource>
                <resource>
                  <directory>npm</directory>
                  <includes>
                    <include>js/*</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
