<project name="Create &amp; Update a Cordova BlackBerry WebWorks Project" default="help">
<!-- 
   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.
-->
    <!-- LOAD VERSION -->
    
    <loadfile property="version" srcFile="VERSION">
        <filterchain>
            <striplinebreaks/>
        </filterchain>
    </loadfile>
    
    <!-- LOAD PROPERTIES -->
    
    <property name="template.project.dir" location="bin/templates/project" />
    <property name="template.dist.dir"    location="bin/templates/dist" />
    
    <property name="build.dir"            location="build" />
    <property name="update.dir"           value="lib/cordova.${version}" />
    
    <property name="dist.path"         location="dist" />
    <property name="dist.www.path"     location="${dist.path}/www" />
    <property name="dist.project.path" location="${dist.path}/sample" />
    
    <property name="jar.src"      location="framework/ext/src" />
    <property name="jar.path"     value="ext" />
    <property name="jar.basename" value="cordova.${version}.jar" />
    <property name="jar.file"     value="${jar.path}/${jar.basename}" />
    
    <property name="playbook.js.path"   value="javascript/playbook" />
    <property name="playbook.ext.src"   location="framework/ext-air" />
    <property name="playbook.ext.path"  value="ext-air" />
    
    <property name="js.src"          location="javascript" />
    <property name="js.path"         value="javascript" />
    <property name="js.basename"     value="cordova-${version}.js" />
    <property name="js.file"         value="${js.path}/${js.basename}" />
    
    <!-- BUILD JAVASCRIPT -->
    
    <target name="build-javascript">
        <!-- BB Javascript -->
        <mkdir dir="${build.dir}/${js.path}" />
        <copy file="${js.src}/cordova.blackberry.js" tofile="${build.dir}/${js.file}" />

        <!-- PB Javascript -->
        <mkdir dir="${build.dir}/${playbook.js.path}" />
        <copy file="${js.src}/cordova.playbook.js" tofile="${build.dir}/${playbook.js.path}/${js.basename}" />

    </target>

    <!-- BUILD BLACKBERRY EXTENSION -->

    <target name="build-bb-extension">
        <mkdir dir="${build.dir}/${jar.path}" />

        <zip destfile="${build.dir}/${jar.file}">
            <fileset dir="${jar.src}" includes="library.xml" />
            <fileset dir="${jar.src}" includes="**/*.java" />
        </zip>
    </target>
    
    <!-- BUILD PLAYBOOK EXTENSION -->
    
    <target name="build-pb-extension">

        <!-- Copy Ext -->
        <mkdir dir="${build.dir}/${playbook.ext.path}" />
        <copy todir="${build.dir}/${playbook.ext.path}">
            <fileset dir="${playbook.ext.src}" />
        </copy>
    </target>
    
    <!-- CREATE A PROJECT -->
    <target name="create" depends="clean, build-javascript, build-bb-extension, build-pb-extension">
        <fail unless="project.path" message="You must give a project PATH. Use the argument -Dproject.path=&#34;C:\dev\my_project&#34;" />
        
        <available file="${project.path}" property="project.exists" />
        <fail if="project.exists" message="The project path must be an empty directory." />
        
        <!-- create project using template directory -->
        <mkdir dir="${project.path}" />
        <copy todir="${project.path}">
            <fileset dir="${template.project.dir}" />
        </copy>
        
        <!-- change file permission for cordova scripts because ant copy doesn't preserve file permissions -->
        <chmod dir="${template.project.dir}/cordova" perm="700" includes="*"/>
        
        <!-- update project files to reference cordova.x.x.x.js -->
        <replaceregexp match="cordova\.js" replace="${js.basename}" byline="true">
            <fileset file="${project.path}/www/index.html" />
            <fileset file="${project.path}/build.xml" />
        </replaceregexp>
        
        <!-- copy cordova.js -->
        <copy todir="${project.path}/www">
            <fileset dir="${build.dir}/${js.path}" />
        </copy>
        
        <!-- copy ext/ -->
        <copy todir="${project.path}/www/ext">
            <fileset dir="${build.dir}/${jar.path}" />
        </copy>
        
        <!-- copy ext-air/ -->
        <copy todir="${project.path}/www/ext-air">
            <fileset dir="${build.dir}/${playbook.ext.path}" />
        </copy>
        
        <!-- save release -->
        <mkdir dir="${project.path}/${update.dir}" />
        <copy todir="${project.path}/${update.dir}">
            <fileset dir="${build.dir}" />
        </copy>
        
        <echo>
Project Creation Complete!
==========================

Getting Started:
----------------

  cd ${project.path}

  ant help
        </echo>
    </target>
    
    <!-- DISTRIBUTION -->
    <target name="dist" depends="">
        <!-- create a sample project -->
        <antcall target="create">
            <param name="project.path" value="${dist.project.path}" />
        </antcall>
        
        <!-- copy dist template (README.md) -->
        <copy todir="${dist.path}">
            <fileset dir="${template.dist.dir}" />
        </copy>
        
        <!-- change file permission for cordova scripts because ant copy doesn't preserve file permissions -->
        <chmod dir="${dist.path}/sample/cordova" perm="700" includes="*" />
        
        <!-- copy cordova.jar -->
        <copy todir="${dist.www.path}/ext">
            <fileset dir="${build.dir}/${jar.path}" />
        </copy>

        <!-- copy ext-air/ -->
        <copy todir="${dist.www.path}/ext-air">
            <fileset dir="${build.dir}/${playbook.ext.path}" />
        </copy>
        
        <!-- copy cordova.js -->
        <copy todir="${dist.www.path}">
            <fileset dir="${build.dir}/${js.path}" />
        </copy>
        
        <!-- copy config.xml -->
        <copy todir="${dist.www.path}">
            <fileset file="${template.project.dir}/www/config.xml" />
        </copy>
        
        <!-- copy plugins.xml -->
        <copy todir="${dist.www.path}">
            <fileset file="${template.project.dir}/www/plugins.xml" />
        </copy>

        <!-- update config.xml to have a default name-->
        <replace file="${dist.project.path}/www/config.xml" token="__NAME__" value="cordovaExample"/>        
        
        <echo>
Distribution Complete!
======================

Version:
--------

  ${version}

Path:
-----

  ${dist.path}
        </echo>
    </target>
    
    <target name="version">
        <replace dir="." token="${version}" value="${value}" />
        
        <echo>
Version Update Complete!
========================

Version:
--------

  Previous: ${version}
  Current:  ${value}

Remember to:
------------

  Review and commit the version update.
  
  $ git diff
  $ git commit -am "Update to version ${value}"
  $ git tag ${value}
        </echo>
    </target>
    
    <!-- UPDATE A PROJECT -->
    
    <target name="update" depends="clean, build-javascript, build-bb-extension, build-pb-extension">
        <fail unless="project.path" message="You must give a project PATH. Use the argument -Dproject.path=&#34;C:\dev\my_project&#34;" />
        
        <available file="${project.path}" property="project.exists" />
        <fail unless="project.exists" message="The project path cannot be empty." />
        
        <!-- save release -->
        <mkdir dir="${project.path}/${update.dir}" />
        <copy todir="${project.path}/${update.dir}">
            <fileset dir="${build.dir}" />
        </copy>
        
        <echo>
Update complete!
================

  Cordova ${version} has been created.
  
  Update does not alter your project files.
  
  See below for instructions to install Cordova ${version}.

Where:
------

  ${project.path}/${update.dir}

Install:
--------

  1. Install the Java Extension:

    - delete /www/${jar.path}/cordova.jar
    
    - copy /${update.dir}/${jar.file}
        to /www/${jar.file}

  2. Install the JavaScript library:

    - delete /www/cordova.js
    
    - copy /${update.dir}/${js.file}
        to /www/${js.basename}

  3. Update JavaScript references:

    - &#60;script type=&#34;text/javascript&#34; src=&#34;${js.basename}&#34;&#62;&#60;/script&#62;
        </echo>
    </target>
    
    <!-- CLEAN -->
    
    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.path}" />
    </target>
    
    <!-- HELP -->
    
    <target name="help">
        <echo>
NAME
  ${ant.project.name}

SYNOPSIS
  ant COMMAND [-D&lt;argument&gt;=&lt;value&gt;]...

DESCRIPTION
  This tool allows you to create and update Cordova-BlackBerry-WebWorks projects.
  You will want to run update after you have updated the framework source.
  In other words, when you &lt;git pull origin master&gt;.

COMMANDS
  help ............ Show this help menu.
                      ant, ant help

  create .......... Create a new project
                      ant create PATH
                      ant create -Dproject.path="C:\dev\my_project"

  update .......... Update an existing project
                      ant update PATH
                      ant update -Dproject.path="C:\dev\my_project"

  dist ............ Create a Cordova distribution build
                      ant dist

  version ......... Update Cordova version
                      ant version VERSION
                      ant version -Dvalue="1.0.0"
        </echo>
    </target>
</project>
