<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.alfresco</groupId>
        <artifactId>alfresco-packaging</artifactId>
        <version>5.0.c</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>alfresco-installer</artifactId>
    <packaging>jar</packaging>
    <name>Alfresco Installers</name>

    <properties>
        <binaries.folder>${user.home}/binaries</binaries.folder>
        <bitrock.folder>${binaries.folder}/bitrock/bitrock-9.5.1</bitrock.folder>
        <signing.key.location>${binaries.folder}/build-classpath/alfresco-code-sign</signing.key.location>
        <bitrock.arguments>
           --license
           ${binaries.folder}/build-classpath/license.xml
           --setvars
           project.outputDirectory=${project.build.directory}
           project.version=${project.version}
           project.fullName='Alfresco Community'
           alfresco_svn_rootdir=${basedir}/../..
           alfresco_edition=community
           distribution_folder=${project.build.directory}/distribution/alfresco-community-${project.version}
           wcmqs_folder=${project.build.directory}/wcmqs
           alfresco_amps_source_directory=${project.build.directory}/dependency
        </bitrock.arguments>
    </properties>

    <dependencies>
        <!-- These binaries are extracted using tar, to preserve symlinks -->

        <!-- Tomcat -->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat</artifactId>
            <version>${installer.tomcat.version}</version>
            <classifier>linux</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat</artifactId>
            <version>${installer.tomcat.version}</version>
            <classifier>osx</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat</artifactId>
            <version>${installer.tomcat.version}</version>
            <classifier>win32</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat</artifactId>
            <version>${installer.tomcat.version}</version>
            <classifier>win64</classifier>
            <type>tgz</type>
        </dependency>

        <!-- PostgreSQL -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql-distribution</artifactId>
            <version>${installer.postgresql.version}</version>
            <classifier>linux</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql-distribution</artifactId>
            <version>${installer.postgresql.version}</version>
            <classifier>osx</classifier>
            <type>tgz</type>
        </dependency>        
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql-distribution</artifactId>
            <version>${installer.postgresql.version}</version>
            <classifier>win32</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql-distribution</artifactId>
            <version>${installer.postgresql.version}</version>
            <classifier>win64</classifier>
            <type>tgz</type>
        </dependency>

        <!-- Java -->
        <dependency>
            <groupId>com.oracle.java</groupId>
            <artifactId>jre</artifactId>
            <version>${installer.java.version}</version>
            <classifier>linux</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>com.oracle.java</groupId>
            <artifactId>jre</artifactId>
            <version>${installer.java.version}</version>
            <classifier>osx</classifier>
            <type>tgz</type>
        </dependency>        
        <dependency>
            <groupId>com.oracle.java</groupId>
            <artifactId>jre</artifactId>
            <version>${installer.java.version}</version>
            <classifier>win32</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>com.oracle.java</groupId>
            <artifactId>jre</artifactId>
            <version>${installer.java.version}</version>
            <classifier>win64</classifier>
            <type>tgz</type>
        </dependency>

        <!-- LibreOffice -->
        <dependency>
            <groupId>org.libreoffice</groupId>
            <artifactId>libreoffice-dist</artifactId>
            <version>${installer.libreoffice.version}</version>
            <classifier>linux</classifier>
            <type>tgz</type>
        </dependency>
        <dependency>
            <groupId>org.libreoffice</groupId>
            <artifactId>libreoffice-dist</artifactId>
            <version>${installer.libreoffice.version}</version>
            <classifier>osx</classifier>
            <type>tgz</type>
        </dependency>        
        <dependency>
            <groupId>org.libreoffice</groupId>
            <artifactId>libreoffice-dist</artifactId>
            <version>${installer.libreoffice.version}</version>
            <classifier>windows</classifier>
            <type>tgz</type>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>get-distribution</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <!-- Distribution -->
                                <artifactItem>
                                    <groupId>org.alfresco</groupId>
                                    <artifactId>alfresco-distribution</artifactId>
                                    <version>${project.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}/distribution</outputDirectory>
                                </artifactItem>
                                <!-- WCMQS Distribution -->
                                <artifactItem>
                                    <groupId>org.alfresco</groupId>
                                    <artifactId>alfresco-wcmqs-distribution</artifactId>
                                    <version>${project.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}/wcmqs</outputDirectory>
                                </artifactItem>
                                <!-- Solr1 Distribution -->
                                <artifactItem>
                                    <groupId>org.alfresco</groupId>
                                    <artifactId>alfresco-solr1-distribution</artifactId>
                                    <version>${project.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}/distribution/alfresco-community-${project.version}/alf_data/solr</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>get-amps</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.alfresco.integrations</groupId>
                                    <artifactId>alfresco-googledocs-repo</artifactId>
                                    <version>${alfresco.googledocs.version}</version>
                                    <type>amp</type>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.alfresco.integrations</groupId>
                                    <artifactId>alfresco-googledocs-share</artifactId>
                                    <version>${alfresco.googledocs.version}</version>
                                    <type>amp</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Extract all the binaries: Tomcat, PostgreSQL, Java, LibreOffice -->
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>extract-binaries-tgz</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <ant antfile="extract-binaries.xml" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <executable>${bitrock.executable}</executable>
                    <workingDirectory>${basedir}/src/main/resources/bitrock</workingDirectory>
                </configuration>
                <executions>
                    <!-- Windows 32 -->
                    <execution>
                        <id>win32-installer</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <skip>${skipWinInstaller}</skip>
                            <commandlineArgs>
                               build project.xml
                               windows
                               ${bitrock.arguments}
                               binaries_folder=${binaries.folder}/bitrock/binaries-windows
                               local_binaries_folder=${project.build.directory}/binaries-windows
                               project.installerFilename=alfresco-community-${project.version}-installer-win-x32.exe
                            </commandlineArgs>
                        </configuration>
                    </execution>

                    <!-- Windows 64 -->
                    <execution>
                        <id>win64-installer</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <skip>${skipWinInstaller}</skip>
                            <commandlineArgs>
                               build project.xml
                               windows
                               ${bitrock.arguments}
                               binaries_folder=${binaries.folder}/bitrock/binaries-windows-x64
                               local_binaries_folder=${project.build.directory}/binaries-windows-x64
                               project.installerFilename=alfresco-community-${project.version}-installer-win-x64.exe
                            </commandlineArgs>
                        </configuration>
                    </execution>

                    <!-- Linux 64 -->
                    <execution>
                        <id>linux-installer</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <skip>${skipLinInstaller}</skip>
                            <commandlineArgs>
                               build project.xml
                               linux-x64
                               ${bitrock.arguments}
                               binaries_folder=${binaries.folder}/bitrock/binaries-linux-x64
                               local_binaries_folder=${project.build.directory}/binaries-linux-x64
                               project.installerFilename=alfresco-community-${project.version}-installer-linux-x64.bin
                            </commandlineArgs>
                        </configuration>
                    </execution>

                    <!-- OS X -->
                    <execution>
                        <id>osx-installer</id>
                        <phase>package</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <skip>${skipOSXInstaller}</skip>
                            <commandlineArgs>
                               build project.xml
                               osx
                               ${bitrock.arguments}
                               binaries_folder=${binaries.folder}/bitrock/binaries-osx-x64
                               local_binaries_folder=${project.build.directory}/binaries-osx-x64
                               project.installerFilename=alfresco-community-${project.version}-installer-osx-x64.app
                            </commandlineArgs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- Profiles to set the right path to Bitrock Builder executable -->
        <profile>
            <id>win-bitrock</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <bitrock.executable>${bitrock.folder}/win/bin/builder-cli.exe</bitrock.executable>
            </properties>
        </profile>
        <profile>
            <id>linux-bitrock</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <properties>
                <bitrock.executable>${bitrock.folder}/linux/bin/builder</bitrock.executable>
            </properties>
        </profile>

        <!-- Signing Windows installers -->
        <profile>
            <id>sign</id>
            <activation>
                <file>
                    <exists>${user.home}/binaries/build-classpath/alfresco-code-sign.der</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-windows-installers</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <skip>${skipWinInstaller}</skip>
                                    <target>
                                        <ant antfile="sign.xml" />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
