<?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="build-lsp-server" depends="-set-use-jdk-javac,build,test-init">
        <copy todir="${lsp.build.dir}/platform" failonerror="false">
            <fileset dir="${netbeans.dest.dir}/platform" />
        </copy>
        <copy todir="${lsp.build.dir}/ide" failonerror="false">
            <fileset dir="${netbeans.dest.dir}/ide" />
        </copy>
        <copy todir="${lsp.build.dir}/extide" failonerror="false">
            <fileset dir="${netbeans.dest.dir}/extide" />
        </copy>
        <copy todir="${lsp.build.dir}/java" failonerror="false">
            <fileset dir="${netbeans.dest.dir}/java" excludes="**/org-netbeans-modules-java-hints-test.jar,**/org-netbeans-modules-debugger-jpda-truffle.jar" />
        </copy>
        <mkdir dir="${lsp.build.dir}/bin" />
        <copy todir="${lsp.build.dir}/bin" file="script/bin/nb-java-lsp-server" />
        <mkdir dir="${lsp.build.dir}/etc" />
        <copy todir="${lsp.build.dir}/etc" file="script/etc/nb-java-lsp-server.conf" />
        <copy todir="${lsp.build.dir}/etc" file="script/etc/nb-java-lsp-server.clusters" />
        <chmod file="${lsp.build.dir}/bin/nb-java-lsp-server" 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" />
    </target>
    <target name="-set-use-jdk-javac">
        <property name="test.use.jdk.javac" value="true" />
    </target>
    <target name="clean" depends="projectized.clean">
        <delete dir="${lsp.build.dir}" />
    </target>
    <target name="build-vscode-ext" depends="build-lsp-server" description="Build the Visual Studio Code extension.">
        <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="vsce" />
        </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-0.0.1.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-0.0.1.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-0.0.1.vsix" basedir="${build.dir}/vscode-mandatory/" update="true" />
    </target>
</project>
