<?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="groovy-global-ast-transformation-example" default="jar-transform">

    <!-- necessary groovy jars are assumed to be on your classpath. -->
    <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" />
    
    <target name="init" description="cleanup old class files">
        <delete dir="examples"/>
        <delete>
            <fileset dir="." includes="**/*.jar"/>
        </delete>        
    </target>

    <target name="compile-transform" depends="init" description="Compiles the AST Transformation">
    
        <groovyc destdir="."
                srcdir="."
                includes="*Transformation.groovy" 
                listfiles="true">
        </groovyc>
        
    </target>

    <target name="jar-transform" depends="compile-transform" description="Creates a .jar file for the global transform" >
        <jar destfile="LoggingTransform.jar"
            basedir="."
            includes="**/*.class,META-INF/**" />

        <echo>You can now run "groovy -cp LoggingTransform.jar LoggingExample.groovy" or "groovy -cp LoggingTransform.jar CompiledAtExample.groovy" to see that the transformation worked.</echo>
    </target>
</project>

