<?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 name="run" basedir=".">

    <target name="-init">
        <property name="run.jdkhome" location="${nbjdk.home}"/>
        <condition property="test.user.dir" value="${suite.build.dir}/testuserdir" else="${build.dir}/testuserdir">
            <isset property="suite.build.dir"/>
        </condition>
        <property name="suite.dir" location="${basedir}"/>
        <property name="run.args.common" value='--userdir "${test.user.dir}" -J-Dnetbeans.logger.console=true -J-ea'/>
        <!-- In case run from a suite module, to get app.name and/or branding.token: -->
        <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
        <property file="${suite.dir}/nbproject/platform.properties"/>
        <property file="${suite.dir}/nbproject/private/private.properties"/>
        <property file="${suite.dir}/nbproject/project.properties"/>
        <!-- CP with id="cluster.path.id" is expected to be passed as parameter to run.xml -->
        <pathconvert property="install">
            <path refid="cluster.path.id"/>
            <regexpmapper from="(.*[/\\])platform[0-9]*$$" to="\1"/>
        </pathconvert>
        
        <!-- clear modulename_hidden files from external clusters so they do not influence the availability of
              modules selected by the current cluster -->
        <!-- We'll clear only clusters under 'build' folder to avoid deleting
             files in binary platform/clusters (e.g. user hacks), while
             un-hiding modules hidden by depended-upon suites. Cf. issue #172727 -->
        <pathconvert property="cluster.path.projects" refid="cluster.path.id">
            <regexpmapper handledirsep="true" from="^.*/build/[^/]+$$" to="\0"/>
        </pathconvert>
        <delete>
            <pathfileset include="config/Modules/*_hidden">
                <path path="${cluster.path.projects}"/>
            </pathfileset>
        </delete>
        
        <!-- architecture of jvm on which app will run -->
        <condition property="jvm.arch.string" value="64" else="">
            <available file="${run.jdkhome}\jre\lib\amd64" />
        </condition>  
        
        <!-- use nb.exe if exists (old platform), netbeans.exe otherwise -->
        <condition property="run.app.exe" value="bin\nb.exe" else="bin\netbeans${jvm.arch.string}.exe">
            <available file="${install}\bin\nb.exe"/>
        </condition>
        <property name="run.app.sh" value="bin/netbeans"/>
        <property name="run.exe.candidate" location="${install}\${run.app.exe}"/>
        <property name="run.sh.candidate" location="${install}/${run.app.sh}"/>
         <!-- #63976: if disabling things, better to treat as a platform-based app -->
        <condition property="app.name" value="test">
            <or>
                <and>
                    <isset property="disabled.modules"/>
                    <length string="${disabled.modules}" when="greater" length="0"/>
                </and>
                <and>
                    <isset property="enabled.clusters"/>
                    <length string="${enabled.clusters}" when="greater" length="0"/>
                </and>
                <and>
                    <isset property="disabled.clusters"/>
                    <length string="${disabled.clusters}" when="greater" length="0"/>
                </and>
                <!-- #66793: also treat as a platform-based app if using platform and have no branding -->
                <not>
                    <or>
                        <available file="${run.exe.candidate}"/>
                        <available file="${run.sh.candidate}"/>
                    </or>
                </not>
            </or>
        </condition>
    </target>

    <target name="-prepare-as-app" depends="-init" unless="app.name">
        <property name="run.exe" location="${run.exe.candidate}"/>
        <property name="run.sh" location="${run.sh.candidate}"/>
        <mkdir dir="${test.user.dir}/etc"/>
        <pathconvert property="run.extra.clusters">
            <path>
                <pathelement location="${cluster}"/>
                <path refid="cluster.path.id"/>
            </path>
            <!-- Exclude all clusters located in NB install dir;
                 not exactly what netbeans.clusters specify, but good enough -->
            <filtermapper>
                <linecontains negate="true">
                    <contains value="${install}"/>
                </linecontains>
            </filtermapper>
        </pathconvert>
        <echo file="${test.user.dir}/etc/netbeans.conf">netbeans_extraclusters="${run.extra.clusters}"</echo>
        <property name="run.args.prepared" value=''/>
    </target>

    <target name="-prepare-as-platform" depends="-init" if="app.name">
        <property name="disabled.modules" value=""/>
        <fail message="Platform cluster is not present in cluster.path: '${cluster.path.final}'">
            <condition>
                <not>
                    <matches string="${cluster.path.final}" pattern="[\\/]platform[0-9]*([;:]|$)"/>
                </not>
            </condition>
        </fail>
        <pathconvert property="run.platform.clusters">
            <path>
                <pathelement location="${cluster}"/>
                <!-- Does not exclude clusters in which all modules are excluded, shouldn't be a problem -->
                <path refid="cluster.path.id"/>
            </path>
        </pathconvert>
        <pathconvert property="run.exe">
            <path>
                <fileset dir="${install}" includes="platform*/lib/nbexec${jvm.arch.string}.exe"/>
            </path>
        </pathconvert>
        <pathconvert property="run.sh">
            <path>
                <fileset dir="${install}" includes="platform*/lib/nbexec"/>
            </path>
        </pathconvert>
        <property name="branding.token" value="-"/> <!-- fallback value if not set -->
        <property name="run.args.prepared" value='--branding ${branding.token} --clusters "${run.platform.clusters}"'/>
    </target>

    <target name="run" depends="-prepare-as-app,-prepare-as-platform">
        <touch file="${cluster}/.lastModified"/> <!-- #138427 -->
        <property name="run.args" value=""/>
        <property name="run.args.ide" value=""/>
        <property name="run.args.extra" value=""/>
        <condition property="run.args.mac" value="-J-Xdock:name='${app.name}'" else="">
            <os family="mac"/>
        </condition>
        <exec osfamily="windows" executable="${run.exe}" failonerror="no">
            <arg value="--jdkhome"/>
            <arg file="${run.jdkhome}"/>
            <arg line="${run.args.common}"/>
            <arg line="${run.args.prepared}"/>
            <arg line="${run.args}"/>
            <arg line="${run.args.extra}"/>
            <arg line="${run.args.ide}"/>
        </exec>
        <exec osfamily="unix" dir="." executable="sh" failonerror="no">
            <arg value="${run.sh}"/>
            <arg value="--jdkhome"/>
            <arg file="${run.jdkhome}"/>
            <arg line="${run.args.common}"/>
            <arg line="${run.args.prepared}"/>
            <arg line="${run.args}"/>
            <arg line="${run.args.extra}"/>
            <arg line="${run.args.mac}"/>
            <arg line="${run.args.ide}"/>
        </exec>
    </target>


    <target name="debug">
        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
        <nbjpdastart name="NetBeans" addressproperty="debug.port" transport="dt_socket">
            <classpath>
                <pathfileset include="**/*.jar">
                    <path refid="cluster.path.id"/>
                </pathfileset>
                <fileset dir="${cluster}">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
        </nbjpdastart>
        <property name="debug.pause" value="y"/>
        <property name="debug.args" value="-J-agentlib:jdwp=transport=dt_socket,suspend=${debug.pause},server=n,address=${debug.port}"/>
        <antcall target="run">
            <param name="run.args" value="${debug.args}"/>
            <reference refid="cluster.path.id"/>
        </antcall>
    </target>
    
    <target name="-profile-check" if="netbeans.home">
        <condition property="profiler.configured">
            <or>
                <contains string="${run.args.ide}" substring="-agentpath:" casesensitive="true"/>
                <contains string="${run.args.ide}" substring="-javaagent:" casesensitive="true"/>
            </or>
        </condition>
    </target>
    
    <target name="profile" depends="-profile-check,-profile-pre72" if="profiler.configured" unless="profiler.info.jvmargs.agent" description="Profile a project in the IDE.">
        <startprofiler/>
        <antcall target="run">
            <reference refid="cluster.path.id"/>
        </antcall>
    </target>
    
    <target name="-profile-pre72" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent">
        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
        <nbprofiledirect 
            jvmargsprefix="-J" 
            jvmargsproperty="profiler.jvmargs" 
            mainclass="org.netbeans.Main"
        >
            <classpath>
                <pathfileset include="**/*.jar">
                    <path refid="cluster.path.id"/>
                </pathfileset>
                <fileset dir="${cluster}">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <rootspath>
                <fileset dir="${cluster}">
                    <include name="**/*.jar"/>
                </fileset>
            </rootspath>
        </nbprofiledirect>
        
        <antcall target="run">
            <param name="run.args" value='"${profiler.jvmargs}"'/>
            <reference refid="cluster.path.id"/>
        </antcall>
    </target>
</project>
