<?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="." default="netbeans" name="java/java.lsp.server">
    <description>Builds, tests, and runs the project org.netbeans.modules.java.lsp.server</description>
    <import file="../../nbbuild/templates/projectized.xml"/>
    <target name="proxy-setup" depends="test-init">
        <taskdef name="autoupdate" classname="org.netbeans.nbbuild.AutoUpdate" classpath="${nbantext.jar}"/>
        <taskdef name="configureproxy" classname="org.netbeans.nbbuild.extlibs.ConfigureProxy" classpath="${nbantext.jar}"/>
        <configureproxy connectto="https://netbeans.osuosl.org/binaries/" hostProperty="proxyHost" portProperty="proxyPort"/>
        <setproxy proxyhost="${proxyHost}" proxyPort="${proxyPort}"/>
    </target>
    <target name="build-lsp-server" depends="-set-use-jdk-javac,build,test-init,proxy-setup" description="Prepares NetBeans bits for vscode extensions">
        <ant dir="nbcode" target="build-zip" inheritall="false" inheritrefs="false" />
        <unzip src="nbcode/dist/nbcode.zip" dest="${lsp.build.dir}/../">
            <globmapper from="nbcode/nb/*" to="nbcode/nbcode/*"/>
        </unzip>
        <mkdir dir="${lsp.build.dir}/bin" />
        <copy todir="${lsp.build.dir}/bin" file="script/bin/nbcode" overwrite="true" />
        <mkdir dir="${lsp.build.dir}/etc" />
        <copy todir="${lsp.build.dir}/etc" file="script/etc/nbcode.conf" overwrite="true" />
        <copy todir="${lsp.build.dir}/etc" file="script/etc/nbcode.clusters" overwrite="true" />
        <chmod file="${lsp.build.dir}/bin/nbcode" perm="u+x" />
        <chmod file="${lsp.build.dir}/platform/lib/nbexec" perm="u+x"/>
        <chmod file="${lsp.build.dir}/java/maven/bin/mvn" perm="u+x" />

        <property name="3rdparty.modules" value=".*nbjavac.*"/>
        <autoupdate todir="${lsp.build.dir}/extra" updatecenter="file://${nb_all}/nb/updatecenters/build/classes/org/netbeans/modules/updatecenters/resources/3rdparty-catalog.xml">
            <modules includes="${3rdparty.modules}"/>
        </autoupdate>
    </target>
    <target name="-set-use-jdk-javac">
        <property name="test.use.jdk.javac" value="true" />
    </target>
    <target name="clean-vscode-ext" depends="clean" description="Cleans all VSCode related artifacts">
        <delete dir="${lsp.build.dir}" />
        <delete dir="vscode/node_modules" />
        <delete dir="vscode/out" />
        <ant dir="nbcode" target="clean" inheritall="false" inheritrefs="false"/>
    </target>
    <target name="build-vscode-ext" depends="build-lsp-server" description="Build the Visual Studio Code extension.">
        <taskdef name="gitbranchhash" classname="org.netbeans.nbbuild.GitBranchHash" classpath="${nbantext.jar}" />
        <gitbranchhash file="." branchproperty="metabuild.branch" hashproperty="metabuild.hash" />
        <condition property="metabuild.hash" value="master" >
            <not>
                <isset property="metabuild.hash" />
            </not>
        </condition>
        <property name="vsix.version" value="0.1.0"/>

        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="--allow-same-version"/>
            <arg value="version" />
            <arg value="${vsix.version}" />
        </exec>

        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="install" />
        </exec>

        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="run" />
            <arg value="compile" />
        </exec>

        <delete dir="${build.dir}/bundles" />
        <mkdir dir="${build.dir}/bundles/package" />
        <copy file="vscode/package.json" todir="${build.dir}/bundles/package" />
        <copy file="vscode/package-lock.json" todir="${build.dir}/bundles/package" />

        <exec executable="mvn" failonerror="true" dir="${nb_all}/nbbuild/misc/prepare-bundles">
            <arg value="package" />
            <arg value="exec:java" />
            <arg value="-Dexec.mainClass=org.netbeans.prepare.bundles.PrepareBundles" />
            <arg value="-Dexec.args=${build.dir}/bundles ${nb_all}" />
        </exec>
 
        <mkdir dir="${build.dir}/vsce" />
        <exec executable="npm" failonerror="true" dir="${build.dir}/vsce">
            <arg value="install" />
            <arg value="--save" />
            <arg value="vsce@2.6.4" />
        </exec>
        <exec executable="${build.dir}/vsce/node_modules/vsce/vsce" failonerror="true" dir="${basedir}/vscode">
            <arg value="package" />
            <arg value="--baseImagesUrl" />
            <arg value="https://github.com/apache/netbeans/raw/${metabuild.hash}/java/java.lsp.server/vscode" />
            <arg value="--out" />
            <arg value="${build.dir}/apache-netbeans-java-${vsix.version}.vsix" />
        </exec>

        <delete dir="${build.dir}/vscode" />
        <mkdir dir="${build.dir}/vscode" />
        <delete dir="${build.dir}/vscode-mandatory" />
        <mkdir dir="${build.dir}/vscode-mandatory/licenses" />

        <unzip dest="${build.dir}/vscode" src="${build.dir}/apache-netbeans-java-${vsix.version}.vsix" />

        <taskdef name="createlicensesummary" classname="org.netbeans.nbbuild.extlibs.CreateLicenseSummary" classpath="${nbantext.jar}"/>

        <property name="config.javadoc.all" value="" />
        <resolvelist name="allmodules" path="modules.fullpath" dir="${nb_all}" list="${clusters.config.java.list}"/>

        <createlicensesummary licenseStub="${nb_all}/LICENSE"
                              noticeStub="${nb_all}/nbbuild/notice-stub.txt"
                              report="${build.dir}/createlicensesummary.xml"
                              nball="${nb_all}"
                              build="${build.dir}/vscode"
                              license="${build.dir}/vscode-mandatory/LICENSE"
                              licenseTargetDir="${build.dir}/vscode-mandatory/licenses"
                              notice="${build.dir}/vscode-mandatory/NOTICE"
                              binary="true"
                              excludes="${nb-extra-files}"
                              extraExternalDirectory="${build.dir}/bundles/bundles"
                              extraLicenseDirectory="${build.dir}/bundles/licenses"
                              includeAllFiles="true"
        />

        <zip destfile="${build.dir}/apache-netbeans-java-${vsix.version}.vsix" basedir="${build.dir}/vscode-mandatory/" update="true" />
    </target>
    <target name="test-lsp-server" description="Tests the LSP server behavior">
        <ant dir="nbcode" target="test" inheritall="false" inheritrefs="false" />
    </target>

    <target name="test-vscode-ext" depends="test-lsp-server" description="Tests the Visual Studio Code extension built by 'build-vscode-ext' target.">
        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="--allow-same-version"/>
            <arg value="run" />
            <arg value="test" />
        </exec>
        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="--allow-same-version"/>
            <arg value="run" />
            <arg value="apisupport" />
        </exec>
    </target>
</project>
