<?xml version="1.0"?>

<!--
   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 name="signit">
  <!-- use this property file to enter your default key id -->
  <property file="${user.home}/gnupg.properties"/>
  <taskdef resource="org/apache/commons/openpgp/ant/antlib.xml">
    <classpath>
      <pathelement
        location="${user.home}/.m2/repository/org/bouncycastle/bcprov-jdk12/130/bcprov-jdk12-130.jar"/>
      <pathelement
        location="${user.home}/.m2/repository/org/apache/commons/commons-openpgp/1.0-SNAPSHOT/commons-openpgp-1.0-SNAPSHOT.jar"/>
      <pathelement
        location="${user.home}/.m2/repository/org/bouncycastle/bcpg-jdk12/130/bcpg-jdk12-130.jar"/>
    </classpath>
  </taskdef>
  <signer secring="${user.home}/AppData/Roaming/gnupg/secring.gpg"
    pubring="${user.home}/AppData/Roaming/gnupg/pubring.gpg" password="${password}" keyid="${keyid}">
    <fileset dir="../java-repository">
      <include name="**/*.jar"/>
      <include name="**/*.pom"/>
    </fileset>
    <fileset dir="../distribution">
      <include name="**/*.bz2"/>
      <include name="**/*.zip"/>
      <include name="**/*.gz"/>
    </fileset>
  </signer>

</project>
