<?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.
-->
<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
<!-- for some information on what you could do (e.g. targets to override). -->
<!-- If you delete this file and reopen the project it will be recreated. -->
<project name="cmdline" basedir=".">
    <description>Builds the module suite cmdline.</description>
    <import file="nbproject/build-impl.xml"/>
<!--    <import file="../suite-common.xml"/>-->

    <!-- copied (and adjusted) from suite.xml: -->
    <target name="test" depends="build" description="Runs tests for all modules in the suite.">
        <sortsuitemodules unsortedmodules="${modules}" sortedmodulesproperty="modules.test.sorted" sorttests="true"/>
        <subant target="test" buildpath="${modules.test.sorted}" inheritrefs="false" inheritall="false">
            <property name="cluster.path.evaluated" value="${cluster.path.evaluated}"/> <!-- Just for speed of pre-7.0 projects -->
            <property name="harness.taskdefs.done" value="${harness.taskdefs.done}"/> <!-- optimization -->
        </subant>
    </target>

    <target name="build-source-dist">
        <mkdir dir="build" />
        <zip file="build/incubating-apache-netbeans-jackpot-${version}.zip">
            <zipfileset dir="." />
            <zipfileset dir=".." includes="DISCLAIMER" fullpath="DISCLAIMER"/>
            <zipfileset dir=".." includes="LICENSE" fullpath="LICENSE"/>
            <zipfileset dir=".." includes="NOTICE" fullpath="NOTICE"/>
        </zip>
    </target>

    <target name="build-and-test">
        <ant dir="${basedir}" inheritAll="false" inheritRefs="false">
            <property name="nbplatform.default.harness.dir" value="${NETBEANS_PLATFORM}/harness" />
            <property name="nbplatform.default.netbeans.dest.dir" value="${NETBEANS_PLATFORM}" />
            <property name="test.run.args" value="--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED" />
            <property name="test.nbjdk.home" value="${JDK10}" />
            <target name="clean" />
            <target name="build" />
            <target name="test" />
        </ant>
        <ant dir="${basedir}/tool" target="create-standalone-tool" inheritAll="false" inheritRefs="false">
            <property name="nbplatform.default.harness.dir" value="${NETBEANS_PLATFORM}/harness" />
            <property name="nbplatform.default.netbeans.dest.dir" value="${NETBEANS_PLATFORM}" />
            <property name="continue.after.failing.tests" value="false" />
            <property name="test.run.args" value="--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED" />
            <property name="test.nbjdk.home" value="${JDK10}" />
        </ant>
        <property environment="env"/>
        <exec executable="build/test/scripted/run" dir="tool" failonerror="true">
            <env key="JAVA_HOME" path="${JDK10}" />
            <env key="PATH" path="${JDK10}/bin:${env.PATH}" />
        </exec>
    </target>

    <target name="rat">
        <mkdir dir="build" />
        <get src="https://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.12/apache-rat-0.12.jar"
             dest="build/apache-rat-0.12.jar"
             skipexisting="true" />

        <taskdef uri="antlib:org.apache.rat.anttasks" resource="org/apache/rat/anttasks/antlib.xml">
            <classpath>
                <pathelement location="build/apache-rat-0.12.jar"/>
            </classpath>
        </taskdef>

        <fileset dir="${basedir}" id="rat.files">
            <excludesfile name="rat-exclusions.txt" />
        </fileset>

        <rat:report xmlns:rat="antlib:org.apache.rat.anttasks" reportfile="build/rat-report.txt">
            <rat:fullTextMatcher licenseFamilyCategory="AL" licenseFamilyName="Apache License 2.0 Short header">
                Licensed to the Apache Software Foundation (ASF) under one or more contributor 
                license agreements; and to You under the Apache License, Version 2.0.
            </rat:fullTextMatcher>
            <rat:approvedLicense familyName="Apache License 2.0 Short header"/>

            <resources refid="rat.files" />
        </rat:report>

        <resourcecount property="rat.content.elements">
            <fileset file="build/rat-report.txt">
                <and>
                    <contains text="Binaries: 0" />
                    <contains text="Archives: 0" />
                    <contains text="0 Unknown Licenses" />
                </and>
            </fileset>
        </resourcecount>

        <condition property="rat.failed">
            <not>
                <equals arg1="${rat.content.elements}" arg2="1" />
            </not>
        </condition>

        <fail if="${rat.failed}">RAT failed.</fail>
    </target>
</project>
