<?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 name="ODE" default="stage">

    <property name="build.dir" value="${basedir}/target/stage" />
    <property name="src" value="${basedir}/src/main/dist" />
    <property name="src.bin" value="${src}/bin" />
    <property name="stage" location="target/stage" />
    <property name="stage.bin" location="${stage}/bin" />

    <target name="init">
        <mkdir dir="${build.dir}" />
    </target>

    <target name="stage" depends="init" description="stage a distribution">
        <mkdir dir="${stage}" />
        <antcall target="_stage_license" />
        <antcall target="_stage_examples" />
    </target>

    <target name="_stage_license">
        <copy todir="${stage}" overwrite="true">
            <fileset dir="..">
                <include name="LICENSE"/>
                <include name="NOTICE"/>
                <include name="DISCLAIMER"/>
            </fileset>
        </copy>
    </target>
    <target name="_stage_examples">
        <mkdir dir="${stage}/examples" />
        <copy todir="${stage}/examples" overwrite="true">
            <fileset dir="src/examples"/>
        </copy>
    </target>

</project>
