2012-05-08 01:56:37 +08:00
/ *
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 .
* /
2011-08-21 04:42:46 +08:00
/ *
2012-02-02 09:45:49 +08:00
* create a cordova / android project
2011-08-21 04:42:46 +08:00
*
* USAGE
* . / create [ path package activity ]
* /
function read ( filename ) {
2012-05-17 10:38:11 +08:00
WScript . Echo ( 'Reading in ' + filename ) ;
2011-08-21 04:42:46 +08:00
var fso = WScript . CreateObject ( "Scripting.FileSystemObject" ) ;
2012-05-17 10:38:11 +08:00
var f = fso . OpenTextFile ( filename , 1 ) ;
2011-08-21 04:42:46 +08:00
var s = f . ReadAll ( ) ;
f . Close ( ) ;
return s ;
}
function write ( filename , contents ) {
var fso = WScript . CreateObject ( "Scripting.FileSystemObject" ) ;
var f = fso . OpenTextFile ( filename , 2 , true ) ;
f . Write ( contents ) ;
f . Close ( ) ;
}
function replaceInFile ( filename , regexp , replacement ) {
write ( filename , read ( filename ) . replace ( regexp , replacement ) ) ;
}
2012-05-17 10:38:11 +08:00
function exec ( s , output ) {
WScript . Echo ( 'Executing ' + s ) ;
2011-08-21 04:42:46 +08:00
var o = shell . Exec ( s ) ;
2012-05-17 10:38:11 +08:00
while ( o . Status == 0 ) {
WScript . Sleep ( 100 ) ;
}
WScript . Echo ( "Command exited with code " + o . Status ) ;
}
function fork ( s ) {
WScript . Echo ( 'Executing ' + s ) ;
var o = shell . Exec ( s ) ;
while ( o . Status != 1 ) {
WScript . Sleep ( 100 ) ;
}
WScript . Echo ( o . StdOut . ReadAll ( ) ) ;
WScript . Echo ( o . StdErr . ReadAll ( ) ) ;
WScript . Echo ( "Command exited with code " + o . Status ) ;
2011-08-21 04:42:46 +08:00
}
var args = WScript . Arguments , PROJECT _PATH = "example" ,
2012-02-02 09:45:49 +08:00
PACKAGE = "org.apache.cordova.example" , ACTIVITY = "cordovaExample" ,
2011-08-21 04:42:46 +08:00
shell = WScript . CreateObject ( "WScript.Shell" ) ;
2012-05-18 01:59:38 +08:00
// working dir
var ROOT = WScript . ScriptFullName . split ( '\\bin\\create.js' ) . join ( '' ) ;
2011-08-21 04:42:46 +08:00
if ( args . Count ( ) == 3 ) {
WScript . Echo ( 'Found expected arguments' ) ;
PROJECT _PATH = args ( 0 ) ;
PACKAGE = args ( 1 ) ;
ACTIVITY = args ( 2 ) ;
}
var PACKAGE _AS _PATH = PACKAGE . replace ( /\./g , '\\' ) ;
var ACTIVITY _PATH = PROJECT _PATH + '\\src\\' + PACKAGE _AS _PATH + '\\' + ACTIVITY + '.java' ;
var MANIFEST _PATH = PROJECT _PATH + '\\AndroidManifest.xml' ;
var TARGET = shell . Exec ( 'android.bat list targets' ) . StdOut . ReadAll ( ) . match ( /id:\s([0-9]).*/ ) [ 1 ] ;
var VERSION = read ( 'VERSION' ) . replace ( /\r\n/ , '' ) . replace ( /\n/ , '' ) ;
2012-05-17 10:38:11 +08:00
WScript . Echo ( "Project path: " + PROJECT _PATH ) ;
WScript . Echo ( "Package: " + PACKAGE ) ;
WScript . Echo ( "Activity: " + ACTIVITY ) ;
WScript . Echo ( "Package as path: " + PACKAGE _AS _PATH ) ;
WScript . Echo ( "Activity path: " + ACTIVITY _PATH ) ;
WScript . Echo ( "Manifest path: " + MANIFEST _PATH ) ;
WScript . Echo ( "Cordova version: " + VERSION ) ;
2012-05-18 01:59:38 +08:00
// TODO: clobber any existing example
2011-08-21 04:42:46 +08:00
/ *
if [ $ # - eq 0 ]
then
rm - rf $PROJECT _PATH
fi
* /
// create the project
exec ( 'android.bat create project --target ' + TARGET + ' --path ' + PROJECT _PATH + ' --package ' + PACKAGE + ' --activity ' + ACTIVITY ) ;
2012-02-02 09:45:49 +08:00
// update the cordova framework project to a target that exists on this machine
2011-08-21 04:42:46 +08:00
exec ( 'android.bat update project --target ' + TARGET + ' --path framework' ) ;
2012-05-18 01:59:38 +08:00
// pull down commons codec if necessary
var fso = WScript . CreateObject ( 'Scripting.FileSystemObject' ) ;
if ( ! fso . FileExists ( ROOT + '\\framework\\libs\\commons-codec-1.6.jar' ) ) {
// We need the .jar
var url = 'http://mirror.symnds.com/software/Apache//commons/codec/binaries/commons-codec-1.6-bin.zip' ;
var savePath = ROOT + '\\framework\\libs\\commons-codec-1.6-bin.zip' ;
if ( ! fso . FileExists ( savePath ) ) {
// We need the zip to get the jar
var xhr = WScript . CreateObject ( 'MSXML2.XMLHTTP' ) ;
xhr . open ( 'GET' , url , false ) ;
xhr . send ( ) ;
if ( xhr . status == 200 ) {
var stream = WScript . CreateObject ( 'ADODB.Stream' ) ;
stream . Open ( ) ;
stream . Type = 1 ;
stream . Write ( xhr . ResponseBody ) ;
stream . Position = 0 ;
stream . SaveToFile ( savePath ) ;
stream . Close ( ) ;
} else {
WScript . Echo ( 'Could not retrieve the commons-codec. Please download it yourself and put into the framework/libs directory. This process may fail now. Sorry.' ) ;
}
}
var app = WScript . CreateObject ( 'Shell.Application' ) ;
var source = app . NameSpace ( savePath ) . Items ( ) ;
var target = app . NameSpace ( ROOT + '\\framework\\libs' ) ;
target . CopyHere ( source , 256 ) ;
// Move the jar into libs
fso . MoveFile ( ROOT + '\\framework\\libs\\commons-codec-1.6\\commons-codec-1.6.jar' , ROOT + '\\framework\\libs\\commons-codec-1.6.jar' ) ;
// Clean up
fso . DeleteFile ( ROOT + '\\framework\\libs\\commons-codec-1.6-bin.zip' ) ;
fso . DeleteFolder ( ROOT + '\\framework\\libs\\commons-codec-1.6' , true ) ;
}
2012-02-02 09:45:49 +08:00
// compile cordova.js and cordova.jar
2011-08-21 04:42:46 +08:00
// if you see an error about "Unable to resolve target" then you may need to
// update your android tools or install an additional Android platform version
2011-08-21 15:29:07 +08:00
exec ( 'ant.bat -f framework\\build.xml jar' ) ;
2011-08-21 04:42:46 +08:00
// copy in the project template
2012-05-18 01:59:38 +08:00
exec ( 'cmd /c xcopy bin\\templates\\project\\* ' + PROJECT _PATH + ' /S /Y' ) ;
2011-08-21 04:42:46 +08:00
2012-05-17 10:38:11 +08:00
// copy example www assets
exec ( 'cmd /c xcopy ' + PROJECT _PATH + '\\cordova\\assets ' + PROJECT _PATH + ' /S /Y' ) ;
2012-02-02 09:45:49 +08:00
// copy in cordova.js
2012-05-17 10:38:11 +08:00
exec ( 'cmd /c copy framework\\assets\\js\\cordova.android.js ' + PROJECT _PATH + '\\.cordova\\android\\cordova-' + VERSION + '.js /Y' ) ;
2011-08-21 04:42:46 +08:00
2012-02-02 09:45:49 +08:00
// copy in cordova.jar
2012-05-17 10:38:11 +08:00
exec ( 'cmd /c copy framework\\cordova-' + VERSION + '.jar ' + PROJECT _PATH + '\\.cordova\\android\\cordova-' + VERSION + '.jar /Y' ) ;
// copy in xml
exec ( 'cmd /c copy framework\\res\\xml\\cordova.xml ' + PROJECT _PATH + '\\.cordova\\android\\cordova.xml /Y' ) ;
exec ( 'cmd /c copy framework\\res\\xml\\plugins.xml ' + PROJECT _PATH + '\\.cordova\\android\\plugins.xml /Y' ) ;
// write out config file
write ( PROJECT _PATH + '\\.cordova\\config' ,
'VERSION=' + VERSION + '\r\n' +
'PROJECT_PATH=' + PROJECT _PATH + '\r\n' +
'PACKAGE=' + PACKAGE + '\r\n' +
'ACTIVITY=' + ACTIVITY + '\r\n' +
'TARGET=' + TARGET ) ;
// run project-specific create process
fork ( 'cscript.exe ' + PROJECT _PATH + '\\cordova\\create.js' ) ;