You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2013/04/08 21:10:45 UTC
[1/2] wp7 commit: tooling and cli scripts update
Updated Branches:
refs/heads/master 7de2a0895 -> 84261e8aa
tooling and cli scripts update
Project: http://git-wip-us.apache.org/repos/asf/cordova-wp7/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp7/commit/d1b3ff8f
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp7/tree/d1b3ff8f
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp7/diff/d1b3ff8f
Branch: refs/heads/master
Commit: d1b3ff8f87f71bb509c69568620f04365a810188
Parents: 7de2a08
Author: Benn Mapes <be...@gmail.com>
Authored: Sat Apr 6 00:40:52 2013 -0700
Committer: Benn Mapes <be...@gmail.com>
Committed: Sat Apr 6 00:40:52 2013 -0700
----------------------------------------------------------------------
bin/check_reqs | 24 ++
bin/check_reqs.bat | 9 +
bin/check_reqs.js | 91 +++++
bin/create.bat | 25 +-
bin/create.js | 267 +++++++++------
tooling/cordova/build.bat | 9 +
tooling/cordova/clean.bat | 9 +
.../cordova/lib/CordovaDeploy/CordovaDeploy.sln | 20 +
.../CordovaDeploy/CordovaDeploy.csproj | 79 ++++
.../lib/CordovaDeploy/CordovaDeploy/Program.cs | 219 ++++++++++++
.../CordovaDeploy/Properties/AssemblyInfo.cs | 36 ++
tooling/cordova/lib/build.js | 185 ++++++++++
tooling/cordova/lib/clean.js | 125 +++++++
tooling/cordova/lib/deploy-device.bat | 9 +
tooling/cordova/lib/deploy-emulator.bat | 9 +
tooling/cordova/lib/deploy.js | 276 +++++++++++++++
tooling/cordova/lib/list-devices.bat | 9 +
tooling/cordova/lib/list-emulator-images.bat | 9 +
tooling/cordova/lib/list-started-emulators.bat | 9 +
tooling/cordova/lib/log.js | 78 ++++
tooling/cordova/lib/run.js | 122 +++++++
tooling/cordova/lib/start-emulator.bat | 3 +
tooling/cordova/lib/target-list.js | 235 ++++++++++++
tooling/cordova/log.bat | 9 +
tooling/cordova/run.bat | 9 +
25 files changed, 1751 insertions(+), 124 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/bin/check_reqs
----------------------------------------------------------------------
diff --git a/bin/check_reqs b/bin/check_reqs
new file mode 100644
index 0000000..d1b9bc0
--- /dev/null
+++ b/bin/check_reqs
@@ -0,0 +1,24 @@
+#! /bin/sh
+
+#
+# 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.
+#
+
+echo "ERROR: Cordova tooling for Windows Phone requires a Windows OS with the 'msbuild' command "
+echo " in the PATH environment variable as well as having .NET Framework 4.0 (from WP SDK's)"
+exit 1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/bin/check_reqs.bat
----------------------------------------------------------------------
diff --git a/bin/check_reqs.bat b/bin/check_reqs.bat
new file mode 100644
index 0000000..26e7393
--- /dev/null
+++ b/bin/check_reqs.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%check_reqs.js (
+ cscript "%full_path%check_reqs.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'check_reqs.js' in 'bin' folder, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/bin/check_reqs.js
----------------------------------------------------------------------
diff --git a/bin/check_reqs.js b/bin/check_reqs.js
new file mode 100644
index 0000000..9ccad61
--- /dev/null
+++ b/bin/check_reqs.js
@@ -0,0 +1,91 @@
+var args = WScript.Arguments;
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+
+var REQUIRE_GIT = false;
+
+function Usage() {
+ Log("Usage: [ check_reqs | cscript check_reqs.js ]");
+ Log("examples:");
+ Log(" cscript C:\\Users\\anonymous\\cordova-wp7\\bin\\check_reqs.js");
+ Log(" CordovaWindowsPhone\\bin\\check_reqs");
+
+}
+
+// log to stdout or stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// gets the output from a command, failing with the given error message
+function check_command(cmd, fail_msg) {
+ var out = wscript_shell.Exec(cmd);
+ while (out.Status == 0) {
+ WScript.Sleep(100);
+ }
+
+ //Check that command executed
+ if (!out.StdErr.AtEndOfStream) {
+ var line = out.StdErr.ReadLine();
+ Log(fail_msg, true);
+ Log('Output : ' + line, true);
+ WScript.Quit(1);
+ }
+
+ if (!out.StdOut.AtEndOfStream) {
+ var line = out.StdOut.ReadAll();
+ return line;
+ }
+ else {
+ Log('Unable to get output from command "' + cmd + '"', true);
+ WScript.Quit(1);
+ }
+}
+
+/* The tooling for cordova windows phone requires these commands
+ * in the environment PATH variable.
+ * - msbuild (C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319)
+ * - git? (for dynamic cli loading of projects?)
+ */
+function SystemRequiermentsMet() {
+ var cmd = 'msbuild -version'
+ var fail_msg = 'The command `msbuild` failed. Make sure you have the latest Windows Phone SDKs installed, and the `msbuild.exe` command (inside C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319) is added to your path.'
+ var output = check_command(cmd, fail_msg);
+ var msversion = output.match(/\.NET\sFramework\,\sversion\s4\.0/);
+ if (!msversion) {
+ Log('Please install the .NET Framwork v4.0.30319 (in the latest windows phone SDK\'s).', true);
+ Log('Make sure the "msbuild" command in your path is pointing to v4.0.30319 of msbuild as well (inside C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319).', true);
+ WScript.Quit(1);
+ }
+
+ if(REQUIRE_GIT) {
+ cmd = 'git --version';
+ fail_msg = 'The command `git` failed. Make sure you have git installed as well ad in your PATH environment so the tool can use it';
+ output = check_command(cmd, fail_msg);
+ var gitVersion = output.match(/git\sversion\s1\./);
+ if (!gitVersion) {
+ Log('Please ensure you have at least git v1 installed and added to you PATH so this tool can use it to get the latest codova.');
+ }
+ }
+}
+
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help" || args(0) == "-h") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else {
+ Log('Error : Did not recognize argument ' + args(0), true)
+ Usage();
+ WScript.Quit(1);
+ }
+}
+
+SystemRequiermentsMet();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/bin/create.bat
----------------------------------------------------------------------
diff --git a/bin/create.bat b/bin/create.bat
index 92b7ed0..329048e 100644
--- a/bin/create.bat
+++ b/bin/create.bat
@@ -1,18 +1,9 @@
-:: 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.
@ECHO OFF
-cscript "%~dp0\create.js" %* //nologo
\ No newline at end of file
+SET full_path=%~dp0
+IF EXIST %full_path%create.js (
+ cscript "%full_path%create.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'create.js' in 'bin' folder, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/bin/create.js
----------------------------------------------------------------------
diff --git a/bin/create.js b/bin/create.js
index 38202ab..8755f2c 100644
--- a/bin/create.js
+++ b/bin/create.js
@@ -17,59 +17,71 @@
under the License.
*/
-var fso = WScript.CreateObject('Scripting.FileSystemObject'),
- shell = WScript.CreateObject("shell.application"),
- wscript_shell = WScript.CreateObject("WScript.Shell");
+/*
+ * create a cordova/wp7 project
+ *
+ * USAGE
+ * ./create [path package activity]
+
+ ./bin/create.bat C:\Users\Me\MyTestProj "test.proj" "TestProject"
+ */
+
+
+var fso=WScript.CreateObject("Scripting.FileSystemObject");
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\bin\\create.js').join('');
var args = WScript.Arguments,
+ FRAMEWORK_PATH = '\\framework',
+ TOOLING_PATH = '\\tooling',
TEMPLATES_PATH = '\\templates',
// sub folder for standalone project
STANDALONE_PATH = TEMPLATES_PATH + '\\standalone',
// sub folder for full project
FULL_PATH = TEMPLATES_PATH + '\\full',
+ CUSTOM_PATH = TEMPLATES_PATH + '\\custom',
// default template to use when creating the project
- CREATE_TEMPLATE = STANDALONE_PATH,
- PROJECT_PATH,
- PACKAGE,
+ CREATE_TEMPLATE = FULL_PATH,
+ PROJECT_PATH,
+ PACKAGE,
NAME;
-// working dir
-var ROOT = WScript.ScriptFullName.split('\\bin\\create.js').join('');
+ // get version number
+var VERSION=read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,'');
+var BASE_VERSION = VERSION.split('rc', 1) + ".0";
-function Usage()
-{
+function Usage() {
+ Log("Usage: create PathTONewProject [ PackageName AppName ]");
+ Log(" PathTONewProject : The path to where you wish to create the project");
+ Log(" PackageName : The namespace for the project (default is Cordova.Example)")
+ Log(" AppName : The name of the application (default is CordovaAppProj)");
+ Log("examples:");
+ Log(" create C:\\Users\\anonymous\\Desktop\\MyProject");
+ Log(" create C:\\Users\\anonymous\\Desktop\\MyProject io.Cordova.Example AnApp");
+}
- WScript.StdOut.WriteLine("Usage: create PathTONewProject [ PackageName AppName ]");
- WScript.StdOut.WriteLine(" PathTONewProject : The path to where you wish to create the project");
- WScript.StdOut.WriteLine(" PackageName : The namespace for the project (default is Cordova.Example)")
- WScript.StdOut.WriteLine(" AppName : The name of the application (default is CordovaAppProj)");
- WScript.StdOut.WriteLine("examples:");
- WScript.StdOut.WriteLine(" create C:\\Users\\anonymous\\Desktop\\MyProject");
- WScript.StdOut.WriteLine(" create C:\\Users\\anonymous\\Desktop\\MyProject io.Cordova.Example AnApp");
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
}
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
function read(filename) {
- //WScript.StdOut.WriteLine('Reading in ' + filename);
- if(fso.FileExists(filename))
- {
- var f=fso.OpenTextFile(filename, 1,2);
- var s=f.ReadAll();
- f.Close();
- return s;
- }
- else
- {
- WScript.StdOut.WriteLine('Cannot read non-existant file : ' + filename);
- WScript.Quit(1);
- }
- return null;
+ var f=fso.OpenTextFile(filename, 1,2);
+ var s=f.ReadAll();
+ f.Close();
+ return s;
}
function write(filename, contents) {
- var fso=WScript.CreateObject("Scripting.FileSystemObject");
var f=fso.OpenTextFile(filename, ForWriting, TristateTrue);
f.Write(contents);
f.Close();
@@ -79,129 +91,170 @@ function replaceInFile(filename, regexp, replacement) {
write(filename,read(filename).replace(regexp,replacement));
}
+
// executes a commmand in the shell
function exec(command) {
var oShell=wscript_shell.Exec(command);
while (oShell.Status == 0) {
- if(!oShell.StdOut.AtEndOfStream) {
+ WScript.sleep(100);
+ }
+}
+
+// executes a commmand in the shell
+function exec_verbose(command) {
+ //Log("Command: " + command);
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ //Wait a little bit so we're not super looping
+ WScript.sleep(100);
+ //Print any stdout output from the script
+ if (!oShell.StdOut.AtEndOfStream) {
var line = oShell.StdOut.ReadLine();
- // XXX: Change to verbose mode
- // WScript.StdOut.WriteLine(line);
+ Log(line);
}
- WScript.sleep(100);
+ }
+ //Check to make sure our scripts did not encounter an error
+ if (!oShell.StdErr.AtEndOfStream) {
+ var line = oShell.StdErr.ReadAll();
+ Log(line, true);
+ WScript.Quit(1);
}
}
-// generate unique project GUID - Not needed unless building an actual project (example?)
-function genGuid()
-{
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
- return v.toString(16);
- });
+//generate guid for the project
+function genGuid() {
+ var TypeLib = WScript.CreateObject("Scriptlet.TypeLib");
+ strGuid = TypeLib.Guid.split("}")[0]; // there is extra crap after the } that is causing file streams to break, probably an EOF ...
+ strGuid = strGuid.replace(/[\{\}]/g,"");
+ return strGuid;
}
-// creates a project from the standalone template
-function create(path, namespace, name)
-{
- WScript.StdOut.WriteLine("Creating Cordova-WP7 Project:");
- WScript.StdOut.WriteLine("\tApp Name : " + name);
- WScript.StdOut.WriteLine("\tNamespace : " + namespace);
- WScript.StdOut.WriteLine("\tPath : " + path);
-
- fso.CreateFolder(path);
-
- // copy everything from standalone to project directory
- var dest = shell.NameSpace(path);
- var sourceItems = shell.NameSpace(ROOT + CREATE_TEMPLATE).items();
- if (dest != null)
- {
- dest.CopyHere(sourceItems, 4|20);
- WScript.Sleep(1000);
- }
- else
- {
- WScript.StdOut.WriteLine("Failed to create project directory.");
- WScript.StdOut.WriteLine("CREATE FAILED.");
- WScript.Quit(1);
+// builds the new cordova dll from the framework
+function build_dll(path) {
+ if (fso.FolderExists(path + FRAMEWORK_PATH + '\\Bin')) {
+ fso.DeleteFolder(path + FRAMEWORK_PATH + '\\Bin');
}
-
- // delete any generated files that might have been in template
- if(fso.FolderExists(path + "\\obj"))
- {
- fso.DeleteFolder(path + "\\obj");
+ if (fso.FolderExists(path + FRAMEWORK_PATH + '\\obj')) {
+ fso.DeleteFolder(path + FRAMEWORK_PATH + '\\obj');
}
- if(fso.FolderExists(path + "\\Bin"))
- {
- fso.DeleteFolder(path + "\\Bin");
+ // move to framework directory
+ wscript_shell.CurrentDirectory = path + FRAMEWORK_PATH;
+ // build .dll in Release
+ exec_verbose('msbuild /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Release;VersionNumber=' + VERSION + ';BaseVersionNumber=' + BASE_VERSION);
+ //Check if file dll was created
+ if (!fso.FileExists(path + FRAMEWORK_PATH + '\\Bin\\Release\\WPCordovaClassLib.dll')) {
+ Log('ERROR: MSBuild failed to create .dll when building WPCordovaClassLib.dll', true);
+ WScript.Quit(1);
}
+ Log("SUCCESS BUILDING DLL");
+}
+
+// creates new project in path, with the given package and app name
+function create(path, namespace, name) {
+ Log("Creating Cordova-WP7 Project:");
+ Log("\tApp Name : " + name);
+ Log("\tNamespace : " + namespace);
+ Log("\tPath : " + path);
+
+ // Copy the template source files to the new destination
+ fso.CopyFolder(ROOT + CREATE_TEMPLATE, path);
- // replace the guid in the AppManifest
var newProjGuid = genGuid();
- replaceInFile(path + "\\Properties\\WMAppManifest.xml", /\$guid1\$/, newProjGuid);
- // replace safe-project-name in all files
- replaceInFile(path + "\\Properties\\WMAppManifest.xml",/\$safeprojectname\$/g, name);
+ // replace the guid in the AppManifest
+ replaceInFile(path + "\\Properties\\WMAppManifest.xml","$guid1$",newProjGuid);
+ // replace safe-project-name in AppManifest
+ replaceInFile(path + "\\Properties\\WMAppManifest.xml",/\$safeprojectname\$/g,name);
+ replaceInFile(path + "\\Properties\\WMAppManifest.xml",/\$projectname\$/g,name);
- replaceInFile(path + "\\App.xaml",/\$safeprojectname\$/g, namespace);
- replaceInFile(path + "\\App.xaml.cs",/\$safeprojectname\$/g, namespace);
- replaceInFile(path + "\\CordovaAppProj.csproj",/\$safeprojectname\$/g, namespace);
- replaceInFile(path + "\\MainPage.xaml",/\$safeprojectname\$/g, namespace);
- replaceInFile(path + "\\MainPage.xaml.cs",/\$safeprojectname\$/g, namespace);
+
+ replaceInFile(path + "\\App.xaml",/\$safeprojectname\$/g,namespace);
+ replaceInFile(path + "\\App.xaml.cs",/\$safeprojectname\$/g,namespace);
+
+ replaceInFile(path + "\\MainPage.xaml",/\$safeprojectname\$/g,namespace);
+ replaceInFile(path + "\\MainPage.xaml.cs",/\$safeprojectname\$/g,namespace);
+ replaceInFile(path + "\\CordovaAppProj.csproj",/\$safeprojectname\$/g,namespace);
//set up debug + emulate paths
+ // TODO : Remove (replaced by cordova scripts build/run/log/clean etc...)
replaceInFile(path + "\\cordova\\debug.bat",/__PATH_TO_TOOLING_SCRIPTS__/g, ROOT + '\\tooling\\scripts');
replaceInFile(path + "\\cordova\\emulate.bat",/__PATH_TO_TOOLING_SCRIPTS__/g, ROOT + '\\tooling\\scripts');
replaceInFile(path + "\\cordova\\debug.bat",/__PATH_TO_PROJ__/g, path);
replaceInFile(path + "\\cordova\\emulate.bat",/__PATH_TO_PROJ__/g, path);
- WScript.StdOut.WriteLine("CREATE SUCCESS.");
-}
+ //copy .dll if necessary
+ if (CREATE_TEMPLATE == FULL_PATH || CREATE_TEMPLATE == CUSTOM_PATH) {
+ var dllPath = ROOT + FRAMEWORK_PATH + '\\Bin\\Release\\WPCordovaClassLib.dll';
+ if (fso.FileExists(dllPath)) {
+ Log("WPCordovaClassLib.dll Found, creating project");
+ }
+ else {
+ Log("WPCordovaClassLib.dll was not Found in " + dllPath);
+ Log('BUILDING: WPCordovaClassLib.dll');
+ build_dll(ROOT);
+ }
+
+ if (!fso.FolderExists(path + '\\CordovaLib')) {
+ fso.CreateFolder(path + '\\CordovaLib');
+ }
+ exec('%comspec% /c xcopy ' + ROOT + FRAMEWORK_PATH + '\\Bin\\Release\\WPCordovaClassLib.dll ' + path + '\\CordovaLib');
+ if (!fso.FileExists(path + '\\CordovaLib\\WPCordovaClassLib.dll')) {
+ Log('ERROR: Failed to copy WPCordovaClassLib.dll to project from', true);
+ Log('\t' + ROOT + FRAMEWORK_PATH + '\\Bin\\Release\\WPCordovaClassLib.dll', true);
+ Log('\tto', true);
+ Log('\t' + path + '\\CordovaLib', true)
+ WScript.Quit(1);
+ }
+ }
+ //TODO: remove cordova folder transfer once reorg of repo is finished and this is put into the template
+ if (fso.FolderExists(path + '\\cordova')) {
+ fso.DeleteFolder(path + '\\cordova');
+ }
+ fso.CopyFolder(ROOT + TOOLING_PATH + '\\cordova', path + '\\cordova');
+
+ Log("CREATE SUCCESS : " + path);
+
+ // TODO: Name the project according to the arguments
+ // update the solution to include the new project by name
+ // version BS
+ // index.html title set to project name ?
-if(args.Count() > 0)
-{
+}
+
+if (args.Count() > 0) {
// support help flags
- if(args(0) == "--help" || args(0) == "/?" ||
- args(0) == "help" || args(0) == "-help" || args(0) == "/help" || args(0) == "-h")
- {
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help" || args(0) == "-h") {
Usage();
WScript.Quit(1);
}
PROJECT_PATH = args(0);
- if(fso.FolderExists(PROJECT_PATH))
- {
- WScript.StdOut.WriteLine("Project directory already exists:");
- WScript.StdOut.WriteLine("\t" + PROJECT_PATH);
- WScript.StdOut.WriteLine("CREATE FAILED.");
+ if (fso.FolderExists(PROJECT_PATH)) {
+ Log("Project directory already exists:", true);
+ Log("\t" + PROJECT_PATH, true);
+ Log("CREATE FAILED.", true);
WScript.Quit(1);
}
- if(args.Count() > 1)
- {
+ if (args.Count() > 1) {
PACKAGE = args(1);
}
- else
- {
+ else {
PACKAGE = "Cordova.Example";
}
- if(args.Count() > 2)
- {
+ if (args.Count() > 2) {
NAME = args(2);
}
- else
- {
+ else {
NAME = "CordovaAppProj";
}
create(PROJECT_PATH, PACKAGE, NAME);
}
-else
-{
+else {
Usage();
WScript.Quit(1);
}
-
-// index.html title set to project name ?
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/build.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/build.bat b/tooling/cordova/build.bat
new file mode 100644
index 0000000..b48598a
--- /dev/null
+++ b/tooling/cordova/build.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%lib\build.js (
+ cscript "%full_path%lib\build.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'build.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/clean.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/clean.bat b/tooling/cordova/clean.bat
new file mode 100644
index 0000000..1bafe1b
--- /dev/null
+++ b/tooling/cordova/clean.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%lib\clean.js (
+ cscript "%full_path%lib\clean.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'clean.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/CordovaDeploy/CordovaDeploy.sln
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/CordovaDeploy/CordovaDeploy.sln b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy.sln
new file mode 100644
index 0000000..3305276
--- /dev/null
+++ b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CordovaDeploy", "CordovaDeploy\CordovaDeploy.csproj", "{E752165B-AF59-4FF0-8601-A2A69FE09E0E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {E752165B-AF59-4FF0-8601-A2A69FE09E0E}.Debug|x86.ActiveCfg = Debug|x86
+ {E752165B-AF59-4FF0-8601-A2A69FE09E0E}.Debug|x86.Build.0 = Debug|x86
+ {E752165B-AF59-4FF0-8601-A2A69FE09E0E}.Release|x86.ActiveCfg = Release|x86
+ {E752165B-AF59-4FF0-8601-A2A69FE09E0E}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
new file mode 100644
index 0000000..fb9949f
--- /dev/null
+++ b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
@@ -0,0 +1,79 @@
+<?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 ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{E752165B-AF59-4FF0-8601-A2A69FE09E0E}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>CordovaDeploy</RootNamespace>
+ <AssemblyName>CordovaDeploy</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ <PlatformTarget>x86</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+ <PlatformTarget>x86</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Smartdevice.Connectivity, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>C:\Program Files (x86)\Common Files\microsoft shared\Phone Tools\CoreCon\10.0\Bin\Microsoft.Smartdevice.Connectivity.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
new file mode 100644
index 0000000..f8e1bdd
--- /dev/null
+++ b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
@@ -0,0 +1,219 @@
+/*
+ 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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.SmartDevice.Connectivity;
+using System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.IO;
+using System.Xml.XPath;
+using System.Xml;
+using System.Xml.Linq;
+
+
+namespace CordovaDeploy
+{
+
+ class DeployTool
+ {
+
+ static void Usage()
+ {
+ Log("Usage: CordovaDeploy [ -devices BuildOutputPath -d:DeviceIndex ]");
+ Log(" -devices : lists the devices and exits");
+ Log(" BuildOutputPath : path to the built application, typically Bin/Debug/ or Bin/Release/");
+ Log(" -d : index of the device to deploy, default is 0 ");
+ Log("examples:");
+ Log(" CordovaDeploy -devices");
+ Log(" CordovaDeploy Bin/Debug");
+ Log(" CordovaDeploy Bin/Release -d:1");
+
+ }
+
+ static void ReadWait()
+ {
+ //Console.WriteLine("\nPress ENTER to continue...");
+ //Console.Read();
+ }
+
+ static void Log(string msg)
+ {
+ Debug.WriteLine(msg);
+ Console.Error.WriteLine(msg);
+ }
+
+ static Guid ReadAppId(string root)
+ {
+ Guid appID = Guid.Empty;
+ string manifestFilePath = root + @"\Properties\WMAppManifest.xml";
+
+ if (File.Exists(manifestFilePath))
+ {
+ XDocument xdoc = XDocument.Load(manifestFilePath);
+ var appNode = xdoc.Root.Descendants("App").FirstOrDefault();
+ if (appNode != null)
+ {
+ string guidStr = appNode.Attribute("ProductID").Value;
+ appID = new Guid(guidStr);
+ }
+ else
+ {
+ Log(string.Format("Unable to find appID, expected to find an App.ProductID property defined in the file {0}", manifestFilePath));
+ }
+ }
+ else
+ {
+ Log(string.Format("Error: the file {0} does not exist", manifestFilePath));
+ }
+
+
+ return appID;
+ }
+
+
+
+ static void ListDevices()
+ {
+ // Get CoreCon WP7 SDK
+ DatastoreManager dsmgrObj = new DatastoreManager(1033);
+ Platform WP7SDK = dsmgrObj.GetPlatforms().Single(p => p.Name == "Windows Phone 7");
+ Collection<Device> devices = WP7SDK.GetDevices();
+ for (int index = 0; index < devices.Count; index++)
+ {
+ Device d = devices[index];
+ string info = string.Format("{0} : {1} : {2}", index.ToString(), d.Id, d.Name);
+ Log(info);
+ }
+ }
+
+ static void Main(string[] args)
+ {
+ int deviceIndex = 0;
+
+ string iconFilePath = "";
+ string xapFilePath = "";
+ Guid appID = Guid.Empty;
+
+ string root = Directory.GetCurrentDirectory();
+
+ if (args.Length < 1)
+ {
+ Usage();
+ ReadWait();
+ return;
+ }
+ else if (args[0] == "-devices")
+ {
+ ListDevices();
+ return;
+ }
+ else if (args.Length > 1 && args[1].StartsWith("-d:"))
+ {
+ deviceIndex = int.Parse(args[1].Substring(3));
+ }
+
+
+ if (Directory.Exists(args[0]))
+ {
+ DirectoryInfo info = new DirectoryInfo(args[0]);
+ root = info.FullName;
+ }
+
+ appID = ReadAppId(root);
+ if (appID == Guid.Empty)
+ {
+ // Logging of errors is done in ReadAppId
+ return;
+ }
+
+ if (File.Exists(root + @"\ApplicationIcon.png"))
+ {
+ iconFilePath = root + @"\ApplicationIcon.png";
+ }
+ else
+ {
+ Log(string.Format("Error: could not find application icon at {0}", root + @"\ApplicationIcon.png"));
+ ReadWait();
+ return;
+ }
+
+
+ xapFilePath = Directory.GetFiles(root + @"\Bin\Debug", "*.xap").FirstOrDefault();
+ if (string.IsNullOrEmpty(xapFilePath))
+ {
+ Log(string.Format("Error: could not find application .xap in folder {0}", root));
+ ReadWait();
+ return;
+ }
+
+
+ // Get CoreCon WP7 SDK
+ DatastoreManager dsmgrObj = new DatastoreManager(1033);
+ Collection<Platform> WP7SDKs = dsmgrObj.GetPlatforms();
+ Platform WP7SDK = dsmgrObj.GetPlatforms().Single(p => p.Name == "Windows Phone 7");
+
+ Collection<Device> devices = null;
+
+ devices = WP7SDK.GetDevices();
+
+ //// Get Emulator / Device
+ Device WP7Device = devices[deviceIndex];
+
+ if (WP7Device != null)
+ {
+ RemoteApplication app;
+ bool isConnected = WP7Device.IsConnected();
+
+ Debug.WriteLine(WP7Device.ToString());
+
+ if (!isConnected)
+ {
+ try
+ {
+ WP7Device.Connect();
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Error: " + ex.Message);
+ ReadWait();
+ return;
+ }
+ }
+
+ if (WP7Device.IsApplicationInstalled(appID))
+ {
+ Log("Uninstalling XAP from " + WP7Device.Name);
+ app = WP7Device.GetApplication(appID);
+ app.Uninstall();
+ }
+
+ Log("Installing app on " + WP7Device.Name);
+ app = WP7Device.InstallApplication(appID, appID, "NormalApp", iconFilePath, xapFilePath);
+
+ Log("Launching app on " + WP7Device.Name);
+ app.Launch();
+
+ ReadWait();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3c26c87
--- /dev/null
+++ b/tooling/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CordovaDeploy")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CordovaDeploy")]
+[assembly: AssemblyCopyright("Copyright © 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("256b11aa-d4bb-48cf-8024-7c040421fa8d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/build.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/build.js b/tooling/cordova/lib/build.js
new file mode 100644
index 0000000..d5e0704
--- /dev/null
+++ b/tooling/cordova/lib/build.js
@@ -0,0 +1,185 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+
+var args = WScript.Arguments;
+
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\build.js').join('');
+
+// help/usage function
+function Usage() {
+ Log("");
+ Log("Usage: build [ --debug | --release ]");
+ Log(" --help : Displays this dialog.");
+ Log(" --debug : Builds project in debug mode.");
+ Log(" --release : Builds project in release mode.");
+ Log("examples:");
+ Log(" build ");
+ Log(" build --debug");
+ Log(" build --release");
+ Log("");
+}
+
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// executes a commmand in the shell
+function exec_verbose(command) {
+ //Log("Command: " + command);
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ //Wait a little bit so we're not super looping
+ WScript.sleep(100);
+ //Print any stdout output from the script
+ if (!oShell.StdOut.AtEndOfStream) {
+ var line = oShell.StdOut.ReadLine();
+ Log(line);
+ }
+ }
+ //Check to make sure our scripts did not encounter an error
+ if (!oShell.StdErr.AtEndOfStream) {
+ var line = oShell.StdErr.ReadAll();
+ Log(line, true);
+ WScript.Quit(1);
+ }
+}
+
+// checks to see if a .csproj file exists in the project root
+function is_cordova_project(path) {
+ if (fso.FolderExists(path)) {
+ var proj_folder = fso.GetFolder(path);
+ var proj_files = new Enumerator(proj_folder.Files);
+ for (;!proj_files.atEnd(); proj_files.moveNext()) {
+ if (fso.GetExtensionName(proj_files.item()) == 'csproj') {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+// builds the project and .xap in release mode
+function build_xap_release(path) {
+ Log("Building Cordova-WP7 Project:");
+ Log("\tConfiguration : Release");
+ Log("\tDirectory : " + path);
+
+ wscript_shell.CurrentDirectory = path;
+ exec_verbose('msbuild CordovaSolution.sln /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Release');
+
+ // check if file xap was created
+ if (fso.FolderExists(path + '\\Bin\\Release')) {
+ var out_folder = fso.GetFolder(path + '\\Bin\\Release');
+ var out_files = new Enumerator(out_folder.Files);
+ for (;!out_files.atEnd(); out_files.moveNext()) {
+ if (fso.GetExtensionName(out_files.item()) == 'xap') {
+ Log("BUILD SUCCESS.");
+ return;
+ }
+ }
+ }
+ Log('ERROR: MSBuild failed to create .xap when building cordova-wp7 for release.', true);
+ WScript.Quit(1);
+}
+
+// builds the project and .xap in debug mode
+function build_xap_debug(path) {
+ Log("Building Cordova-WP7 Project:");
+ Log("\tConfiguration : Debug");
+ Log("\tDirectory : " + path);
+
+ wscript_shell.CurrentDirectory = path;
+ exec_verbose('msbuild CordovaSolution.sln /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Debug');
+
+ // check if file xap was created
+ if (fso.FolderExists(path + '\\Bin\\Debug')) {
+ var out_folder = fso.GetFolder(path + '\\Bin\\Debug');
+ var out_files = new Enumerator(out_folder.Files);
+ for (;!out_files.atEnd(); out_files.moveNext()) {
+ if (fso.GetExtensionName(out_files.item()) == 'xap') {
+ Log("BUILD SUCCESS.");
+ return;
+ }
+ }
+ }
+ Log('ERROR: MSBuild failed to create .xap when building cordova-wp7 for debugging.', true);
+ WScript.Quit(1);
+}
+
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (args.Count() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (!is_cordova_project(ROOT)) {
+ Log('Error: .csproj file not found in ' + ROOT, true);
+ Log('could not build project.', true);
+ WScript.Quit(1);
+ }
+
+ if (args(0) == "--debug" || args(0) == "-d") {
+ if (fso.FolderExists(ROOT + '\\Bin\\Debug')) {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\clean --debug');
+ }
+ build_xap_debug(ROOT);
+ }
+ else if (args(0) == "--release" || args(0) == "-r") {
+ if (fso.FolderExists(ROOT + '\\Bin\\Release')) {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\clean --release');
+ }
+ build_xap_release(ROOT);
+ }
+ else {
+ Log("Error: \"" + arg(0) + "\" is not recognized as a build option", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ Log("WARNING: [ --debug | --release ] not specified, defaulting to debug...");
+ build_xap_debug(ROOT);
+}
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/clean.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/clean.js b/tooling/cordova/lib/clean.js
new file mode 100644
index 0000000..a6ae740
--- /dev/null
+++ b/tooling/cordova/lib/clean.js
@@ -0,0 +1,125 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+var args = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\clean.js').join('');
+
+
+// help function
+function Usage() {
+ Log("");
+ Log("Usage: clean [ --debug | --release ]");
+ Log(" --debug : Cleans generated debug files in project.");
+ Log(" --release : Cleans generated release files in project.");
+ Log("examples:");
+ Log(" clean --debug");
+ Log(" clean");
+ Log(" - deletes all generated files in project");
+ Log("");
+}
+
+// logs to stdout or stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// cleans any generated files in the cordova project
+function clean_project(path) {
+ if (fso.FolderExists(path + "\\obj")) {
+ fso.DeleteFolder(path + "\\obj");
+ }
+ if (fso.FolderExists(path + "\\Bin")) {
+ fso.DeleteFolder(path + "\\Bin");
+ }
+ //TODO: delete CordovaAppProj.csproj.user as well? Service References?
+}
+
+// cleans any files generated by build --debug
+function clean_debug(path) {
+ if (fso.FolderExists(path + "\\obj\\Debug")) {
+ fso.DeleteFolder(path + "\\obj\\Debug");
+ }
+ if (fso.FolderExists(path + "\\Bin\\Debug")) {
+ fso.DeleteFolder(path + "\\Bin\\Debug");
+ }
+}
+
+// cleans any files generated by build --release
+function clean_release(path) {
+ if (fso.FolderExists(path + "\\obj\\Release")) {
+ fso.DeleteFolder(path + "\\obj\\Release");
+ }
+ if (fso.FolderExists(path + "\\Bin\\Release")) {
+ fso.DeleteFolder(path + "\\Bin\\Release");
+ }
+}
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (args.Count() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (args(0) == "--debug" || args(0) == "-d") {
+ clean_debug(ROOT);
+ }
+ else if (args(0) == "--release" || args(0) == "-r") {
+ clean_release(ROOT);
+ }
+ else {
+ Log("Error: \"" + arg(0) + "\" is not recognized as a build option", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ if (fso.FolderExists(ROOT)) {
+ Log("Cleaning cordova project...");
+ clean_project(ROOT);
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/deploy-device.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/deploy-device.bat b/tooling/cordova/lib/deploy-device.bat
new file mode 100644
index 0000000..90e39bf
--- /dev/null
+++ b/tooling/cordova/lib/deploy-device.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%deploy.js (
+ cscript "%full_path%deploy.js" %* --device //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'deploy.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/deploy-emulator.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/deploy-emulator.bat b/tooling/cordova/lib/deploy-emulator.bat
new file mode 100644
index 0000000..b4a02d5
--- /dev/null
+++ b/tooling/cordova/lib/deploy-emulator.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%deploy.js (
+ cscript "%full_path%deploy.js" %* --emulator //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'deploy.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/deploy.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/deploy.js b/tooling/cordova/lib/deploy.js
new file mode 100644
index 0000000..fcb011e
--- /dev/null
+++ b/tooling/cordova/lib/deploy.js
@@ -0,0 +1,276 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+
+var args = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\deploy.js').join('');
+ // path to CordovaDeploy.exe
+var CORDOVA_DEPLOY_EXE = '\\cordova\\lib\\CordovaDeploy\\CordovaDeploy\\bin\\Debug\\CordovaDeploy.exe';
+ // path to CordovaDeploy
+var CORDOVA_DEPLOY = '\\cordova\\lib\\CordovaDeploy';
+var BUILD_RELEASE = false;
+
+
+// help function
+function Usage() {
+ Log("");
+ Log("Usage: run [ --device | --emulator | --target=<id> ]");
+ Log(" --device : Deploys and runs the project on the connected device.");
+ Log(" --emulator : Deploys and runs the project on an emulator.");
+ Log(" --target=<id> : Deploys and runs the project on the specified target.")
+ Log("examples:");
+ Log(" run");
+ Log(" run --emulator");
+ Log(" run --device");
+ Log(" run --target=7988B8C3-3ADE-488d-BA3E-D052AC9DC710");
+ Log("");
+}
+
+// log to stdout or stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+var ForReading = 1, ForWriting = 2, ForAppending = 8;
+var TristateUseDefault = 2, TristateTrue = 1, TristateFalse = 0;
+
+
+// executes a commmand in the shell
+function exec(command) {
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ WScript.sleep(100);
+ }
+}
+
+// executes a commmand in the shell
+function exec_verbose(command) {
+ //Log("Command: " + command);
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ //Wait a little bit so we're not super looping
+ WScript.sleep(100);
+ //Print any stdout output from the script
+ if (!oShell.StdOut.AtEndOfStream) {
+ var line = oShell.StdOut.ReadAll();
+ Log(line);
+ }
+ }
+ //Check to make sure our scripts did not encounter an error
+ if (!oShell.StdErr.AtEndOfStream) {
+ var line = oShell.StdErr.ReadAll();
+ Log(line, true);
+ WScript.Quit(1);
+ }
+}
+
+// returns the contents of a file
+function read(filename) {
+ if (fso.FileExists(filename)) {
+ var f=fso.OpenTextFile(filename, 1,2);
+ var s=f.ReadAll();
+ f.Close();
+ return s;
+ }
+ else {
+ Log('Cannot read non-existant file : ' + filename, true);
+ WScript.Quit(1);
+ }
+ return null;
+}
+
+// builds the CordovaDeploy.exe if it does not already exist
+function cordovaDeploy(path) {
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ return;
+ }
+
+ Log('CordovaDeploy.exe not found, attempting to build CordovaDeploy.exe...');
+
+ // build CordovaDeploy.exe
+ if (fso.FolderExists(path + '\\cordova') && fso.FolderExists(path + CORDOVA_DEPLOY) &&
+ fso.FileExists(path + CORDOVA_DEPLOY + '\\CordovaDeploy.sln')) {
+ // delete any previously generated files
+ if (fso.FolderExists(path + CORDOVA_DEPLOY + '\\CordovaDeploy\\obj')) {
+ fso.DeleteFolder(path + CORDOVA_DEPLOY + '\\CordovaDeploy\\obj');
+ }
+ if (fso.FolderExists(path + CORDOVA_DEPLOY + '\\CordovaDeploy\\Bin')) {
+ fso.DeleteFolder(path + CORDOVA_DEPLOY + '\\CordovaDeploy\\Bin');
+ }
+ exec_verbose('msbuild ' + path + CORDOVA_DEPLOY + '\\CordovaDeploy.sln');
+
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('CordovaDeploy.exe compiled, SUCCESS.');
+ }
+ else {
+ Log('ERROR: MSBUILD FAILED TO COMPILE CordovaDeploy.exe', true);
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log('ERROR: CordovaDeploy.sln not found, unable to compile CordovaDeploy tool.', true);
+ WScript.Quit(1);
+ }
+}
+
+// builds and launches project on device
+function device(path)
+{
+ cordovaDeploy(path);
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('Deploying to device ...');
+ exec_verbose('%comspec% /c ' + path + CORDOVA_DEPLOY_EXE + ' ' + path + ' -d:0');
+ }
+ else
+ {
+ Log('Error: Failed to find CordovaDeploy.exe in ' + path, true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(1);
+ }
+}
+
+// builds and launches project on emulator
+function emulator(path)
+{
+ cordovaDeploy(path);
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('Deploying to emulator ...');
+ exec_verbose('%comspec% /c ' + path + CORDOVA_DEPLOY_EXE + ' ' + path + ' -d:1');
+ }
+ else
+ {
+ Log('Error: Failed to find CordovaDeploy.exe in ' + path, true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(1);
+ }
+}
+
+// builds and launches the project on the specified target
+function target(path, device_id) {
+ cordovaDeploy(path);
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('Deploying to ' + device_id + ' ...');
+ var out = wscript_shell.Exec('cscript ' + path + '\\cordova\\lib\\target-list.js //nologo');
+ while(out.Status == 0) {
+ WScript.Sleep(100);
+ }
+ //Check to make sure our script did not encounter an error
+ if (!out.StdErr.AtEndOfStream) {
+ var line = out.StdErr.ReadAll();
+ Log('Error getting availible targets : ', true);
+ Log(line, true);
+ WScript.Quit(1);
+ }
+ else {
+ if (!out.StdOut.AtEndOfStream) {
+ var line = out.StdOut.ReadAll();
+ var targets = line.split('\r\n');
+ var check_id = new RegExp(device_id);
+ for (target in targets) {
+ if (targets[target].match(check_id)) {
+ //TODO: this only gets single digit index, account for device index of 10+?
+ var index = targets[target].substr(0,1);
+ exec_verbose(path + CORDOVA_DEPLOY_EXE + ' ' + path + ' -d:' + index);
+ return;
+ }
+ }
+ Log('Error : target ' + device_id + ' was not found.', true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(1);
+ }
+ else {
+ Log('Error : target-list.js Failed to find any devices', true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(1);
+ }
+
+ }
+
+ }
+ else {
+ Log('Error: Failed to find CordovaDeploy.exe in ' + path, true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(1);
+ }
+}
+
+function build(path) {
+ if (!BUILD_RELEASE) {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\build --debug');
+ }
+ else {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\build --release');
+ }
+}
+
+
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (args.Count() > 1) {
+ Log('Error: Too many arguments.', true);
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (args(0) == "--emulator" || args(0) == "-e") {
+ build(ROOT);
+ emulator(ROOT);
+ }
+ else if (args(0) == "--device" || args(0) == "-d") {
+ build(ROOT);
+ device(ROOT);
+ }
+ else if (args(0).substr(0,9) == "--target=") {
+ build(ROOT);
+ var device_id = args(0).split('--target=').join('');
+ target(ROOT, device_id);
+ }
+ else {
+ Log('Error: \"' + arg(0) + '\" is not recognized as a deploy option', true);
+ Usage();
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log('Error: Project directory not found,', true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ Log('WARNING: [ --device | --emulator | --target=<id> ] not specified, defaulting to emulator...');
+ emulator(ROOT);
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/list-devices.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/list-devices.bat b/tooling/cordova/lib/list-devices.bat
new file mode 100644
index 0000000..bf4492b
--- /dev/null
+++ b/tooling/cordova/lib/list-devices.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%target-list.js (
+ cscript "%full_path%target-list.js" %* --devices //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'target-list.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/list-emulator-images.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/list-emulator-images.bat b/tooling/cordova/lib/list-emulator-images.bat
new file mode 100644
index 0000000..3f571c7
--- /dev/null
+++ b/tooling/cordova/lib/list-emulator-images.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%target-list.js (
+ cscript "%full_path%target-list.js" %* --emulators //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'target-list.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/list-started-emulators.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/list-started-emulators.bat b/tooling/cordova/lib/list-started-emulators.bat
new file mode 100644
index 0000000..93e5c5f
--- /dev/null
+++ b/tooling/cordova/lib/list-started-emulators.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%target-list.js (
+ cscript "%full_path%target-list.js" %* --started_emulators //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'target-list.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/log.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/log.js b/tooling/cordova/lib/log.js
new file mode 100644
index 0000000..acd3399
--- /dev/null
+++ b/tooling/cordova/lib/log.js
@@ -0,0 +1,78 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+var args = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\log.js').join('');
+
+
+// help function
+function Usage() {
+ Log("");
+ Log("Usage: log");
+ Log("examples:");
+ Log(" log");
+ Log(" - logs output from running application *NOT IMPLIMENTED*");
+ Log("");
+}
+
+// logs to stdout or stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// log output from running projects *NOT IMPLEMENTED*
+function log_output(path) {
+ Log("ERROR: Logging is not supported on Windows Phone", true);
+ WScript.Quit(1);
+}
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else {
+ Log("Error: \"" + arg(0) + "\" is not recognized as a log option.", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ if (fso.FolderExists(ROOT)) {
+ log_output(ROOT);
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/run.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/run.js b/tooling/cordova/lib/run.js
new file mode 100644
index 0000000..7ad3ba6
--- /dev/null
+++ b/tooling/cordova/lib/run.js
@@ -0,0 +1,122 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+
+var args = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\run.js').join('');
+
+
+// help function
+function Usage() {
+ Log("");
+ Log("Usage: run [ --target=<ID> ]");
+ Log("examples:");
+ Log(" run");
+ Log(" run target=7988B8C3-3ADE-488d-BA3E-D052AC9DC710")
+ Log("");
+ Log("Flow for run command :");
+ Log("\t0. Are there any actual devices available? (use list-devices to determine this). If so, target the first one. If no, continue.");
+ Log("\t1. Are there any actual emulators available, i.e. started/running? (use list-started-emulators to determine this). If so, target the first one. If no, continue.");
+ Log("\t2. Are there any emulator images available to start? (use list-emulator-images to determine this). If so, call start-emulator <id> of the first available image, wait for it to become ready, then target it. If no, continue.");
+ Log("\t3. Fail horribly.");
+}
+
+// executes a commmand in the shell
+function exec_verbose(command) {
+ //Log("Command: " + command);
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ //Wait a little bit so we're not super looping
+ WScript.sleep(100);
+ //Print any stdout output from the script
+ if (!oShell.StdOut.AtEndOfStream) {
+ var line = oShell.StdOut.ReadLine();
+ Log(line);
+ }
+ }
+ //Check to make sure our scripts did not encounter an error
+ if (!oShell.StdErr.AtEndOfStream) {
+ var line = oShell.StdErr.ReadAll();
+ Log(line, true);
+ WScript.Quit(1);
+ }
+}
+
+// log to stdout or stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// deploy to specified target
+function target(path, target) {
+ var cmd = 'cscript ' + path + '\\cordova\\lib\\deploy.js --target=' + target + ' //nologo';
+ exec_verbose(cmd);
+}
+
+// deploy to availible device, if no device is availible, deploy to emulator.
+// TODO: implement list-devices (currenly not possible) and list-started-emulators and use device first then started emulator
+function deploy(path) {
+ var cmd = 'cscript ' + path + '\\cordova\\lib\\deploy.js --emulator //nologo';
+ exec_verbose(cmd);
+}
+
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (args.Count() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (args(0).substr(0,9) == "--target=") {
+ target(ROOT, args(0));
+ }
+ else {
+ Log("Error: \"" + arg(0) + "\" is not recognized as a run option", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ Log("WARNING: [ --target=<ID> ] not specified, using defaults...");
+ deploy(ROOT);
+}
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/start-emulator.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/start-emulator.bat b/tooling/cordova/lib/start-emulator.bat
new file mode 100644
index 0000000..bf38d0c
--- /dev/null
+++ b/tooling/cordova/lib/start-emulator.bat
@@ -0,0 +1,3 @@
+@ECHO OFF
+ECHO Sorry, start-emulator is not availible yet for Windows Phone.>&2
+EXIT /B 1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/lib/target-list.js
----------------------------------------------------------------------
diff --git a/tooling/cordova/lib/target-list.js b/tooling/cordova/lib/target-list.js
new file mode 100644
index 0000000..b53670d
--- /dev/null
+++ b/tooling/cordova/lib/target-list.js
@@ -0,0 +1,235 @@
+/*
+ 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.
+*/
+
+
+var fso = WScript.CreateObject('Scripting.FileSystemObject');
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+
+var args = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\target-list.js').join('');
+ // path to CordovaDeploy.exe
+var CORDOVA_DEPLOY_EXE = '\\cordova\\lib\\CordovaDeploy\\CordovaDeploy\\bin\\Debug\\CordovaDeploy.exe';
+ // path to CordovaDeploy
+var CORDOVA_DEPLOY = '\\cordova\\lib\\CordovaDeploy';
+
+// help/usage function
+function Usage() {
+ Log("");
+ Log("Usage: cscript target-list.js [ --emulators | --devices | --started_emulators | --all ]");
+ Log(" --emulators : List the possible target emulators availible.");
+ Log(" --devices : List the possible target devices availible. *NOT IMPLEMENTED YET*");
+ Log(" --started_emulators : List any started emulators availible. *NOT IMPLEMENTED YET*");
+ Log(" --all : List all devices returned by CordovaDeploy.exe -devices ");
+ Log("examples:");
+ Log(" cscript target-list.js --emulators");
+ Log(" cscript target-list.js --devices");
+ Log(" cscript target-list.js --started_emulators");
+ Log(" cscript target-list.js --all");
+ Log("");
+}
+
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+ if (error) {
+ WScript.StdErr.WriteLine(msg);
+ }
+ else {
+ WScript.StdOut.WriteLine(msg);
+ }
+}
+
+// executes a commmand in the shell
+function exec(command) {
+ var oShell=wscript_shell.Exec(command);
+ while (oShell.Status == 0) {
+ //Wait a little bit so we're not super looping
+ WScript.sleep(100);
+ //Print output? Naa.....
+ if (!oShell.StdOut.AtEndOfStream) {
+ var line = oShell.StdOut.ReadAll();
+ //Log(line);
+ }
+ }
+ //Check to make sure our scripts did not encounter an error
+ if (!oShell.StdErr.AtEndOfStream) {
+ var line = oShell.StdErr.ReadAll();
+ Log(line, true);
+ WScript.Quit(1);
+ }
+}
+
+// returns all possible targets generated by the CordovaDeploy tool
+function get_targets(path) {
+ if (!fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ cordovaDeploy(path);
+ }
+ wscript_shell.CurrentDirectory = path + CORDOVA_DEPLOY + '\\CordovaDeploy\\bin\\Debug';
+ var cmd = 'CordovaDeploy -devices';
+ var out = wscript_shell.Exec(cmd);
+ while(out.Status == 0) {
+ WScript.Sleep(100);
+ }
+ //Check to make sure our script did not encounter an error
+ if (!out.StdErr.AtEndOfStream) {
+ var line = out.StdErr.ReadAll();
+ if (line.substring(0, 1) == '0') {
+ var targets = line.split('\r\n');
+ return targets;
+ }
+ else {
+ Log("Error calling CordovaDeploy : ", true);
+ Log(line, true);
+ WScript.Quit(1);
+ }
+ }
+ else {
+ if (!out.StdOut.AtEndOfStream) {
+ var line = out.StdErr.ReadAll();
+ var targets = line.split('\r\n');
+ return targets;
+ }
+ else {
+ Log('Error : CordovaDeploy Failed to find any devices', true);
+ WScript.Quit(1);
+ }
+ }
+}
+
+function list_targets(path) {
+ var targets = get_targets(path);
+ for (i in targets) {
+ Log(targets[i]);
+ }
+}
+
+// lists the Device returned by CordovaDeploy (NOTE: this does not indicate that a device is connected)
+function list_devices(path) {
+ var targets = get_targets(path);
+ var device_found = false;
+ for (i in targets) {
+ if (targets[i].match(/Device/)) {
+ Log(targets[i]);
+ device_found = true;
+ }
+ }
+ if (device_found) {
+ Log('');
+ Log('WARNING : This does not mean that a device is connected, make');
+ Log(' sure your device is connected before deploying to it.');
+ }
+}
+
+// lists the emulators availible to CordovaDeploy
+function list_emulator_images(path) {
+ var targets = get_targets(path);
+ for (i in targets) {
+ if (targets[i].match(/Emulator/)) {
+ Log(targets[i]);
+ }
+ }
+}
+
+// lists any started emulators *NOT IMPLEMENTED*
+function list_started_emulators(path) {
+ Log('ERROR : list-started-emulators is not supported on Windows Phone.', true);
+ WScript.Quit(1);
+}
+
+// builds the CordovaDeploy.exe if it does not already exist
+function cordovaDeploy(path) {
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ return;
+ }
+
+ // build CordovaDeploy.exe
+ if (fso.FolderExists(path + '\\cordova') && fso.FolderExists(path + CORDOVA_DEPLOY) &&
+ fso.FileExists(path + CORDOVA_DEPLOY + '\\CordovaDeploy.sln')) {
+ // delete any previously generated files
+ if (fso.FolderExists(path + CORDOVA_DEPLOY + "\\CordovaDeploy\\obj")) {
+ fso.DeleteFolder(path + CORDOVA_DEPLOY + "\\CordovaDeploy\\obj");
+ }
+ if (fso.FolderExists(path + CORDOVA_DEPLOY + "\\CordovaDeploy\\Bin")) {
+ fso.DeleteFolder(path + CORDOVA_DEPLOY + "\\CordovaDeploy\\Bin");
+ }
+ exec('msbuild ' + path + CORDOVA_DEPLOY + '\\CordovaDeploy.sln');
+
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ return;
+ }
+ else {
+ Log("ERROR: MSBUILD FAILED TO COMPILE CordovaDeploy.exe", true);
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log("ERROR: CordovaDeploy.sln not found, unable to compile CordovaDeploy tool.", true);
+ WScript.Quit(1);
+ }
+}
+
+Log("");
+
+if (args.Count() > 0) {
+ // support help flags
+ if (args(0) == "--help" || args(0) == "/?" ||
+ args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (args.Count() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (!fso.FolderExists(ROOT + '\\cordova')) {
+ Log("Error: cordova tooling folder not found in project directory,", true);
+ Log("could not lsit targets.", true);
+ WScript.Quit(1);
+ }
+
+ if (args(0) == "--emulators" || args(0) == "-e") {
+ list_emulator_images(ROOT);
+ }
+ else if (args(0) == "--devices" || args(0) == "-d") {
+ list_devices(ROOT);
+ }
+ else if (args(0) == "--started_emulators" || args(0) == "-s") {
+ list_started_emulators(ROOT);
+ }
+ else if (args(0) == "--all" || args(0) == "-a") {
+ list_targets(ROOT);
+ }
+ else {
+ Log("Error: \"" + arg(0) + "\" is not recognized as a target-list option", true);
+ Usage();
+ WScript.Quit(1);
+ }
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(1);
+ }
+}
+else {
+ Log("WARNING: target list not specified, showing all targets...");
+ list_targets(ROOT);
+}
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/log.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/log.bat b/tooling/cordova/log.bat
new file mode 100644
index 0000000..a491724
--- /dev/null
+++ b/tooling/cordova/log.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%lib\log.js (
+ cscript "%full_path%lib\log.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'log.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp7/blob/d1b3ff8f/tooling/cordova/run.bat
----------------------------------------------------------------------
diff --git a/tooling/cordova/run.bat b/tooling/cordova/run.bat
new file mode 100644
index 0000000..daf077b
--- /dev/null
+++ b/tooling/cordova/run.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%lib\deploy.js (
+ cscript "%full_path%lib\run.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'run.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)
[2/2] wp7 commit: Merge pull request #13 from bennmapes/tooling
Posted by pu...@apache.org.
Merge pull request #13 from bennmapes/tooling
tooling and cli scripts update
Project: http://git-wip-us.apache.org/repos/asf/cordova-wp7/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp7/commit/84261e8a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp7/tree/84261e8a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp7/diff/84261e8a
Branch: refs/heads/master
Commit: 84261e8aa396eb856f191fdbb6a365f01749e33f
Parents: 7de2a08 d1b3ff8
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Mon Apr 8 11:28:42 2013 -0700
Committer: Jesse MacFadyen <pu...@gmail.com>
Committed: Mon Apr 8 11:28:42 2013 -0700
----------------------------------------------------------------------
bin/check_reqs | 24 ++
bin/check_reqs.bat | 9 +
bin/check_reqs.js | 91 +++++
bin/create.bat | 25 +-
bin/create.js | 267 +++++++++------
tooling/cordova/build.bat | 9 +
tooling/cordova/clean.bat | 9 +
.../cordova/lib/CordovaDeploy/CordovaDeploy.sln | 20 +
.../CordovaDeploy/CordovaDeploy.csproj | 79 ++++
.../lib/CordovaDeploy/CordovaDeploy/Program.cs | 219 ++++++++++++
.../CordovaDeploy/Properties/AssemblyInfo.cs | 36 ++
tooling/cordova/lib/build.js | 185 ++++++++++
tooling/cordova/lib/clean.js | 125 +++++++
tooling/cordova/lib/deploy-device.bat | 9 +
tooling/cordova/lib/deploy-emulator.bat | 9 +
tooling/cordova/lib/deploy.js | 276 +++++++++++++++
tooling/cordova/lib/list-devices.bat | 9 +
tooling/cordova/lib/list-emulator-images.bat | 9 +
tooling/cordova/lib/list-started-emulators.bat | 9 +
tooling/cordova/lib/log.js | 78 ++++
tooling/cordova/lib/run.js | 122 +++++++
tooling/cordova/lib/start-emulator.bat | 3 +
tooling/cordova/lib/target-list.js | 235 ++++++++++++
tooling/cordova/log.bat | 9 +
tooling/cordova/run.bat | 9 +
25 files changed, 1751 insertions(+), 124 deletions(-)
----------------------------------------------------------------------