Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cordova-wp8 into 2.9.x
diff --git a/wp8/template/cordova/lib/build.js b/wp8/template/cordova/lib/build.js
index 9986a7e..fec2d17 100644
--- a/wp8/template/cordova/lib/build.js
+++ b/wp8/template/cordova/lib/build.js
@@ -85,6 +85,19 @@
     return false;
 }
 
+function get_solution_name(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()) == 'sln') {
+                return proj_files.item();
+            }
+        }
+    }
+    return null;
+}
+
 // builds the project and .xap in release mode
 function build_xap_release(path) {
     Log("Building Cordova-WP8 Project:");
@@ -92,7 +105,7 @@
     Log("\tDirectory : " + path);
     
     wscript_shell.CurrentDirectory = path;
-    exec_verbose('msbuild /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Release');
+    exec_verbose('msbuild ' + get_solution_name(path) + ' /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Release');
     
     // check if file xap was created
     if (fso.FolderExists(path + '\\Bin\\Release')) {
@@ -116,7 +129,7 @@
     Log("\tDirectory : " + path);
     
     wscript_shell.CurrentDirectory = path;
-    exec_verbose('msbuild /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Debug');
+    exec_verbose('msbuild ' + get_solution_name(path) + ' /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo /p:Configuration=Debug');
     
     // check if file xap was created
     if (fso.FolderExists(path + '\\Bin\\Debug')) {
diff --git a/wp8/template/cordova/lib/clean.js b/wp8/template/cordova/lib/clean.js
index b091425..f5bdbfc 100644
--- a/wp8/template/cordova/lib/clean.js
+++ b/wp8/template/cordova/lib/clean.js
@@ -28,11 +28,8 @@
 // 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("Usage: clean");
     Log("examples:");
-    Log("    clean --debug");
     Log("    clean");
     Log("         - deletes all generated files in project");
     Log("");
@@ -52,32 +49,6 @@
 function clean_project(path) {
     delete_if_exists(path + "\\obj");
     delete_if_exists(path + "\\Bin");
-
-    // checks to see if a .csproj file exists in the project root
-    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()) == 'user') {
-                delete_if_exists(proj_files.item())
-            } else if (fso.GetExtensionName(proj_files.item()) == 'sou') {
-                delete_if_exists(proj_files.item())
-            }
-        }
-    }
-    //TODO: delete Service References?
-}
-
-// cleans any files generated by build --debug
-function clean_debug(path) {
-    delete_if_exists(path + "\\obj\\Debug");
-    delete_if_exists(path + "\\Bin\\Debug");
-}
-
-// cleans any files generated by build --release
-function clean_release(path) {
-    delete_if_exists(path + "\\obj\\Release");
-    delete_if_exists(path + "\\Bin\\Release");
 }
 
 // deletes the path element if it exists
@@ -98,26 +69,8 @@
         Usage();
         WScript.Quit(2);
     }
-    else if (args.Count() > 1) {
-        Log("Error: Too many arguments.", true);
-        Usage();
-        WScript.Quit(2);
-    }
-    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: \"" + args(0) + "\" is not recognized as a build option", true);
-            Usage();
-            WScript.Quit(2);
-        }
-    }
     else {
-        Log("Error: Project directory not found,", true);
+        Log("Error: \"" + args(0) + "\" is not recognized as a valid option", true);
         Usage();
         WScript.Quit(2);
     }
diff --git a/wp8/template/cordova/lib/deploy.js b/wp8/template/cordova/lib/deploy.js
index 29a3f7d..448fa78 100644
--- a/wp8/template/cordova/lib/deploy.js
+++ b/wp8/template/cordova/lib/deploy.js
@@ -28,6 +28,8 @@
 var CORDOVA_DEPLOY_EXE = '\\cordova\\lib\\CordovaDeploy\\CordovaDeploy\\bin\\Debug\\CordovaDeploy.exe';
     // path to CordovaDeploy
 var CORDOVA_DEPLOY = '\\cordova\\lib\\CordovaDeploy';
+//device_id for targeting specific device
+var device_id;
 
 //build types
 var NONE = 0,
@@ -36,18 +38,27 @@
     NO_BUILD = 3;
 var build_type = NONE;
 
+//deploy tpyes
+var NONE = 0,
+    EMULATOR = 1,
+    DEVICE = 2,
+    TARGET = 3;
+var deploy_type = NONE;
+
 
 // help function
 function Usage() {
     Log("");
-    Log("Usage: run [ --device | --emulator | --target=<id> ] [ --debug | --release | --nobuild ]");
+    Log("Usage:");
+    Log("  run [ --device || --emulator || --target=<id> ] ");
+    Log("      [ --debug || --release || --nobuild ]");
     Log("    --device      : Deploys and runs the project on the connected device.");
-    Log("    --emulator    : Deploys and runs the project on an emulator.");
+    Log("    --emulator    : [DEFAULT] Deploys and runs the project on an emulator.");
     Log("    --target=<id> : Deploys and runs the project on the specified target.");
-    Log("    --debug       : Builds project in debug mode.");
+    Log("    --debug       : [DEFAULT] Builds project in debug mode.");
     Log("    --release     : Builds project in release mode.");
     Log("    --nobuild     : Ueses pre-built xap, or errors if project is not built.");
-    Log("examples:");
+    Log("Examples:");
     Log("    run");
     Log("    run --emulator");
     Log("    run --device");
@@ -184,7 +195,7 @@
 }
 
 // builds and launches the project on the specified target
-function target(path, device_id) {
+function target(path) {
     if (!fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
         cordovaDeploy(path);
     }
@@ -246,66 +257,68 @@
     }
 }
 
+function run(path) {
+    switch(deploy_type) {
+        case EMULATOR :
+            build(path);
+            emulator(path);
+            break;
+        case DEVICE :
+            build(path);
+            device(path);
+            break;
+        case TARGET :
+            build(path);
+            target(path);
+            break;
+        case NONE :
+            Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, defaulting to --emulator");
+            build(path);
+            emulator(path);
+            break;
+        default :
+            Log("Deploy option not recognized: " + deploy_type, true);
+            WScript.Quit(2);
+            break;
+    }
+}
+
 
 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(2);
-    }
-    else if (args.Count() > 2) {
+    // limit args
+    if (args.Count() > 2) {
         Log('Error: Too many arguments.', true);
         Usage();
         WScript.Quit(2);
     }
     else if (fso.FolderExists(ROOT)) {
-        if (args.Count() > 1) {
-            if (args(1) == "--release") {
+        // parse arguments
+        for(var i = 0; i < args.Count(); i++) {
+            if (args(i) == "--release") {
                 build_type = RELEASE;
             }
-            else if (args(1) == "--debug") {
+            else if (args(i) == "--debug") {
                 build_type = DEBUG;
             }
-            else if (args(1) == "--nobuild") {
+            else if (args(i) == "--nobuild") {
                 build_type = NO_BUILD;
             }
-            else {
-                Log('Error: \"' + args(1) + '\" is not recognized as a deploy option', true);
+            else if (args(i) == "--emulator" || args(i) == "-e") {
+                deploy_type = EMULATOR;
+            }
+            else if (args(i) == "--device" || args(i) == "-d") {
+                deploy_type = DEVICE;
+            }
+            else if (args(i).substr(0,9) == "--target=") {
+                device_id = args(i).split("--target=").join("");
+                deploy_type = TARGET;
+            }
+             // support help flags
+            else if (args(0) == "--help" || args(0) == "/?" ||
+                    args(0) == "help" || args(0) == "-help" || args(0) == "/help") {
                 Usage();
                 WScript.Quit(2);
             }
-        }
-
-        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("WARNING: [ --target=<ID> | --emulator | --device ] not specified, defaulting to --emulator");
-            if (args(0) == "--release") {
-                build_type = RELEASE;
-                build(ROOT);
-                emulator(ROOT);
-            }
-            else if (args(0) == "--debug") {
-                build_type = DEBUG;
-                build(ROOT);
-                emulator(ROOT);
-            }
-            else if (args(0) == "--nobuild") {
-                build_type = NO_BUILD;
-                emulator(ROOT);
-            }
             else {
                 Log('Error: \"' + args(0) + '\" is not recognized as a deploy option', true);
                 Usage();
@@ -319,8 +332,6 @@
         WScript.Quit(2);
     }
 }
-else {
-    Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, defaulting to --emulator");
-    build(ROOT);
-    emulator(ROOT);
-}
\ No newline at end of file
+
+// Finally run the project!
+run(ROOT);
\ No newline at end of file