<?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.
-->

<!--

This is a template file for widget build directories that exist outside of
the Wookie directory. It is useful for managing widgets in your own projects.

For instructions on how to build and manage your own widgets see 
http://wookie.apache.org/docs/widgets


-->
<project default="build-widget" basedir="." name="Wookie_scratchpad_widgets_build_file">
    <property name="wookie.root.dir" location="../"/>
    <property name="project.build.dir" location="${wookie.root.dir}/build"/>
    <property name="widget.template.dir" value="${wookie.root.dir}/wookie-widgets/widget-template"/>
    
    <import file="${wookie.root.dir}/wookie-widgets/build.xml"/>
	
	   <target name="build-widget" depends="_init">
		    <zip destfile="${widget.build.dir}/${widget.shortname}.wgt"
		         basedir="${wookie.root.dir}/scratchpad/widgets/${widget.shortname}"
		    />
	   		<echo>Widget package created at ${widget.build.dir}/${widget.shortname}.wgt</echo>
	    </target>
</project>