<?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" />
        <delete file="${lsp.build.dir}/lib/nb-javac-9-api.jar" />
        <delete file="${lsp.build.dir}/lib/nb-javac-9-impl.jar" />
        <delete file="${lsp.build.dir}/lib/org-netbeans-modules-java-source-nbjavac.jar" />

        <property name="3rdparty.modules" value="dont-install-anything"/>
        <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.">
        <property name="vsix.version" value="12.2.2"/>

        <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" />

        <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@1.80.0" />
        </exec>
        <exec executable="${build.dir}/vsce/node_modules/vsce/out/vsce" failonerror="true" dir="${basedir}/vscode">
            <arg value="package" />
            <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="nbjavac" />
        </exec>
        <exec executable="npm" failonerror="true" dir="vscode">
            <arg value="--allow-same-version"/>
            <arg value="run" />
            <arg value="test" />
        </exec>
    </target>
</project>
