<?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 basedir="." name="common.ergonomics">
    <description>Common targets for generating ergonomics data</description>
    <!--
    - single cluster operations
    -->
    <target name="-proxy-one-cluster">
        <property name="cluster" location="."/>
        <pathconvert property="cluster.name">
            <path location="${cluster}"/>
            <mapper type="regexp" from=".*[/\\]([a-z]*)[0-9\.]*" to="\1"/>
        </pathconvert>
        <property name="proxytmp" value="${ergonomicsdir}/build/proxies/${cluster.name}"/>
        <property name="proxydir" value="${ergonomicsdir}/build/classes/org/netbeans/modules/ide/ergonomics/${cluster.name}"/>
        <property name="cluster.properties" value="${ergonomicsdir}/${cluster.name}.properties"/>
        <available
            file="${cluster.properties}" value="${cluster.properties}" property="proxyprop"
        />
        <property name="proxyprop" location="${ergonomicsdir}/empty.properties"/>
        <property name="cluster.entries" location="${cluster}"/>
        <mkdir dir="${proxydir}"/>
        <extractlayer
            clusterName="${cluster.name}"
            bundle="${proxydir}/Bundle.properties"
            destdir="${proxydir}"
        >
           <modules dir="${cluster}">
                <include name="modules/*.jar"/>
            </modules>
           <entries dir="${cluster.entries}">
                <include name="**/modules/*.jar"/>
                <exclude name="ergonomics*/**/*"/>
            </entries>
            <bundlefilter>
                <concatfilter prepend="${proxyprop}"/>
            </bundlefilter>
         </extractlayer>
    </target>


    <target name="-disable-one-cluster">
        <property name="cluster.to.process" location="."/>
        <mkdir dir="${xmldir}"/>
        <createmodulexml xmldir="${xmldir}">
            <disabled dir="${cluster.to.process}">
                <and>
                    <filename name="modules/*.jar"/>
                    <custom
                        classname="org.netbeans.nbbuild.ModuleStateSelector"
                        classpath="${anttasks.jar}"
                    >
                        <param name="acceptEnabled" value="true"/>
                    </custom>
                </and>
            </disabled>
        </createmodulexml>
    </target>
</project>
