You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/05/23 23:58:16 UTC
[19/50] Add WP7 and WP8 platform files.
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/Plugins/UI/VideoRecorder.xaml.cs
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/Plugins/UI/VideoRecorder.xaml.cs b/lib/cordova-wp8/templates/standalone/Plugins/UI/VideoRecorder.xaml.cs
new file mode 100644
index 0000000..6ab1cc3
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/Plugins/UI/VideoRecorder.xaml.cs
@@ -0,0 +1,405 @@
+/*
+ Licensed 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.IO;
+using System.IO.IsolatedStorage;
+using System.Windows.Media;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Microsoft.Phone.Tasks;
+using VideoResult = WPCordovaClassLib.Cordova.UI.VideoCaptureTask.VideoResult;
+
+namespace WPCordovaClassLib.Cordova.UI
+{
+ public partial class VideoRecorder : PhoneApplicationPage
+ {
+
+ #region Constants
+
+ /// <summary>
+ /// Caption for record button in ready state
+ /// </summary>
+ private const string RecordingStartCaption = "Record";
+
+ /// <summary>
+ /// Caption for record button in recording state
+ /// </summary>
+ private const string RecordingStopCaption = "Stop";
+
+ /// <summary>
+ /// Start record icon URI
+ /// </summary>
+ private const string StartIconUri = "/Images/appbar.feature.video.rest.png";
+
+ /// <summary>
+ /// Stop record icon URI
+ /// </summary>
+ private const string StopIconUri = "/Images/appbar.stop.rest.png";
+
+ /// <summary>
+ /// Folder to save video clips
+ /// </summary>
+ private const string LocalFolderName = "VideoCache";
+
+ /// <summary>
+ /// File name format
+ /// </summary>
+ private const string FileNameFormat = "Video-{0}.mp4";
+
+ /// <summary>
+ /// Temporary file name
+ /// </summary>
+ private const string defaultFileName = "NewVideoFile.mp4";
+
+ #endregion
+
+ #region Callbacks
+ /// <summary>
+ /// Occurs when a video recording task is completed.
+ /// </summary>
+ public event EventHandler<VideoResult> Completed;
+
+ #endregion
+
+ #region Fields
+
+ /// <summary>
+ /// Viewfinder for capturing video
+ /// </summary>
+ private VideoBrush videoRecorderBrush;
+
+ /// <summary>
+ /// Path to save video clip
+ /// </summary>
+ private string filePath;
+
+ /// <summary>
+ /// Source for capturing video.
+ /// </summary>
+ private CaptureSource captureSource;
+
+ /// <summary>
+ /// Video device
+ /// </summary>
+ private VideoCaptureDevice videoCaptureDevice;
+
+ /// <summary>
+ /// File sink so save recording video in Isolated Storage
+ /// </summary>
+ private FileSink fileSink;
+
+ /// <summary>
+ /// For managing button and application state
+ /// </summary>
+ private enum VideoState { Initialized, Ready, Recording, CameraNotSupported };
+
+ /// <summary>
+ /// Current video state
+ /// </summary>
+ private VideoState currentVideoState;
+
+ /// <summary>
+ /// Stream to return result
+ /// </summary>
+ private MemoryStream memoryStream;
+
+ /// <summary>
+ /// Recording result, dispatched back when recording page is closed
+ /// </summary>
+ private VideoResult result = new VideoResult(TaskResult.Cancel);
+
+ #endregion
+
+ /// <summary>
+ /// Initializes components
+ /// </summary>
+ public VideoRecorder()
+ {
+ InitializeComponent();
+
+ PhoneAppBar = (ApplicationBar)ApplicationBar;
+ PhoneAppBar.IsVisible = true;
+ btnStartRecording = ((ApplicationBarIconButton)ApplicationBar.Buttons[0]);
+ btnTakeVideo = ((ApplicationBarIconButton)ApplicationBar.Buttons[1]);
+ }
+
+ /// <summary>
+ /// Initializes the video recorder then page is loading
+ /// </summary>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+ this.InitializeVideoRecorder();
+ }
+
+ /// <summary>
+ /// Disposes camera and media objects then leave the page
+ /// </summary>
+ protected override void OnNavigatedFrom(NavigationEventArgs e)
+ {
+ this.DisposeVideoRecorder();
+
+ if (this.Completed != null)
+ {
+ this.Completed(this, result);
+ }
+ base.OnNavigatedFrom(e);
+ }
+
+ /// <summary>
+ /// Handles TakeVideo button click
+ /// </summary>
+ private void TakeVideo_Click(object sender, EventArgs e)
+ {
+ this.result = this.SaveVideoClip();
+ this.NavigateBack();
+ }
+
+ private void NavigateBack()
+ {
+ if (this.NavigationService.CanGoBack)
+ {
+ this.NavigationService.GoBack();
+ }
+ }
+
+ /// <summary>
+ /// Resaves video clip from temporary directory to persistent
+ /// </summary>
+ private VideoResult SaveVideoClip()
+ {
+ try
+ {
+ using (IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForApplication())
+ {
+ if (string.IsNullOrEmpty(filePath) || (!isoFile.FileExists(filePath)))
+ {
+ return new VideoResult(TaskResult.Cancel);
+ }
+
+ string fileName = String.Format(FileNameFormat, Guid.NewGuid().ToString());
+ string newPath = Path.Combine("/" + LocalFolderName + "/", fileName);
+ isoFile.CopyFile(filePath, newPath);
+ isoFile.DeleteFile(filePath);
+
+ memoryStream = new MemoryStream();
+ using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(newPath, FileMode.Open, isoFile))
+ {
+ fileStream.CopyTo(memoryStream);
+ }
+
+ VideoResult result = new VideoResult(TaskResult.OK);
+ result.VideoFileName = newPath;
+ result.VideoFile = this.memoryStream;
+ result.VideoFile.Seek(0, SeekOrigin.Begin);
+ return result;
+ }
+
+ }
+ catch (Exception)
+ {
+ return new VideoResult(TaskResult.None);
+ }
+ }
+
+ /// <summary>
+ /// Updates the buttons on the UI thread based on current state.
+ /// </summary>
+ /// <param name="currentState">current UI state</param>
+ private void UpdateUI(VideoState currentState)
+ {
+ Dispatcher.BeginInvoke(delegate
+ {
+ switch (currentState)
+ {
+ case VideoState.CameraNotSupported:
+ btnStartRecording.IsEnabled = false;
+ btnTakeVideo.IsEnabled = false;
+ break;
+
+ case VideoState.Initialized:
+ btnStartRecording.Text = RecordingStartCaption;
+ btnStartRecording.IconUri = new Uri(StartIconUri, UriKind.Relative);
+ btnTakeVideo.IsEnabled = false;
+ break;
+
+ case VideoState.Ready:
+ btnStartRecording.Text = RecordingStartCaption;
+ btnStartRecording.IconUri = new Uri(StartIconUri, UriKind.Relative);
+ btnTakeVideo.IsEnabled = true;
+ break;
+
+ case VideoState.Recording:
+ btnStartRecording.Text = RecordingStopCaption;
+ btnStartRecording.IconUri = new Uri(StopIconUri, UriKind.Relative);
+ btnTakeVideo.IsEnabled = false;
+ break;
+
+ default:
+ break;
+ }
+ currentVideoState = currentState;
+ });
+ }
+
+ /// <summary>
+ /// Initializes VideoRecorder
+ /// </summary>
+ public void InitializeVideoRecorder()
+ {
+ if (captureSource == null)
+ {
+ captureSource = new CaptureSource();
+ fileSink = new FileSink();
+ videoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
+
+ if (videoCaptureDevice != null)
+ {
+ videoRecorderBrush = new VideoBrush();
+ videoRecorderBrush.SetSource(captureSource);
+ viewfinderRectangle.Fill = videoRecorderBrush;
+ captureSource.Start();
+ this.UpdateUI(VideoState.Initialized);
+ }
+ else
+ {
+ this.UpdateUI(VideoState.CameraNotSupported);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Sets recording state: start recording
+ /// </summary>
+ private void StartVideoRecording()
+ {
+ try
+ {
+ if ((captureSource.VideoCaptureDevice != null) && (captureSource.State == CaptureState.Started))
+ {
+ captureSource.Stop();
+ fileSink.CaptureSource = captureSource;
+ filePath = System.IO.Path.Combine("/" + LocalFolderName + "/", defaultFileName);
+
+ using (IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForApplication())
+ {
+ if (!isoFile.DirectoryExists(LocalFolderName))
+ {
+ isoFile.CreateDirectory(LocalFolderName);
+ }
+
+ if (isoFile.FileExists(filePath))
+ {
+ isoFile.DeleteFile(filePath);
+ }
+ }
+
+ fileSink.IsolatedStorageFileName = filePath;
+ }
+
+ if (captureSource.VideoCaptureDevice != null
+ && captureSource.State == CaptureState.Stopped)
+ {
+ captureSource.Start();
+ }
+ this.UpdateUI(VideoState.Recording);
+ }
+ catch (Exception)
+ {
+ this.result = new VideoResult(TaskResult.None);
+ this.NavigateBack();
+ }
+ }
+
+ /// <summary>
+ /// Sets the recording state: stop recording
+ /// </summary>
+ private void StopVideoRecording()
+ {
+ try
+ {
+ if ((captureSource.VideoCaptureDevice != null) && (captureSource.State == CaptureState.Started))
+ {
+ captureSource.Stop();
+ fileSink.CaptureSource = null;
+ fileSink.IsolatedStorageFileName = null;
+ this.StartVideoPreview();
+ }
+ }
+ catch (Exception)
+ {
+ this.result = new VideoResult(TaskResult.None);
+ this.NavigateBack();
+ }
+ }
+
+ /// <summary>
+ /// Sets the recording state: display the video on the viewfinder.
+ /// </summary>
+ private void StartVideoPreview()
+ {
+ try
+ {
+ if ((captureSource.VideoCaptureDevice != null) && (captureSource.State == CaptureState.Stopped))
+ {
+ videoRecorderBrush.SetSource(captureSource);
+ viewfinderRectangle.Fill = videoRecorderBrush;
+ captureSource.Start();
+ this.UpdateUI(VideoState.Ready);
+ }
+ }
+ catch (Exception)
+ {
+ this.result = new VideoResult(TaskResult.None);
+ this.NavigateBack();
+ }
+ }
+
+ /// <summary>
+ /// Starts video recording
+ /// </summary>
+ private void StartRecording_Click(object sender, EventArgs e)
+ {
+ if (currentVideoState == VideoState.Recording)
+ {
+ this.StopVideoRecording();
+ }
+ else
+ {
+ this.StartVideoRecording();
+ }
+ }
+
+ /// <summary>
+ /// Releases resources
+ /// </summary>
+ private void DisposeVideoRecorder()
+ {
+ if (captureSource != null)
+ {
+ if ((captureSource.VideoCaptureDevice != null) && (captureSource.State == CaptureState.Started))
+ {
+ captureSource.Stop();
+ }
+ captureSource = null;
+ videoCaptureDevice = null;
+ fileSink = null;
+ videoRecorderBrush = null;
+ }
+ }
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/Properties/AppManifest.xml
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/Properties/AppManifest.xml b/lib/cordova-wp8/templates/standalone/Properties/AppManifest.xml
new file mode 100644
index 0000000..877ea4b
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/Properties/AppManifest.xml
@@ -0,0 +1,6 @@
+<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+>
+ <Deployment.Parts>
+ </Deployment.Parts>
+</Deployment>
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/Properties/AssemblyInfo.cs b/lib/cordova-wp8/templates/standalone/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8d9eb89
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/Properties/AssemblyInfo.cs
@@ -0,0 +1,39 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// 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("CordovaAppProj")]
+[assembly: AssemblyDescription("2.0.0.0")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Cordova")]
+[assembly: AssemblyProduct("CordovaAppProj")]
+[assembly: AssemblyCopyright("Copyright © Apache Cordova 2013")]
+[assembly: AssemblyTrademark("Apache Cordova")]
+[assembly: AssemblyCulture("")]
+
+
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
+
+// 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("9e27b972-0825-4386-ba17-63c695262c3d")]
+
+// 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 Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/Properties/WMAppManifest.xml
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/Properties/WMAppManifest.xml b/lib/cordova-wp8/templates/standalone/Properties/WMAppManifest.xml
new file mode 100644
index 0000000..3c18727
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/Properties/WMAppManifest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
+ <DefaultLanguage xmlns="" code="en-US" />
+ <Languages xmlns="">
+ <Language code="en-US" />
+ </Languages>
+ <App xmlns="" ProductID="{13b7ec4f-d4cf-422b-90ef-cd9c48af66ab}" Title="$safeprojectname$" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="$safeprojectname$ author" BitsPerPixel="32" Description="Apache Cordova for Windows Phone" Publisher="$safeprojectname$" PublisherID="{db093ed5-53b1-45f7-af72-751e8f36ab80}">
+ <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
+ <Capabilities>
+ <Capability Name="ID_CAP_IDENTITY_DEVICE" />
+ <Capability Name="ID_CAP_IDENTITY_USER" />
+ <Capability Name="ID_CAP_LOCATION" />
+ <Capability Name="ID_CAP_NETWORKING" />
+ <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
+ <Capability Name="ID_CAP_APPOINTMENTS" />
+ <Capability Name="ID_CAP_CONTACTS" />
+ <Capability Name="ID_CAP_ISV_CAMERA" />
+ <Capability Name="ID_CAP_MICROPHONE" />
+ <Capability Name="ID_CAP_PHONEDIALER" />
+ <Capability Name="ID_CAP_PUSH_NOTIFICATION" />
+ <Capability Name="ID_CAP_SENSORS" />
+ <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
+ <Capability Name="ID_CAP_MEDIALIB_PHOTO" />
+ <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
+ </Capabilities>
+ <Tasks>
+ <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
+ </Tasks>
+ <Tokens>
+ <PrimaryToken TokenID="$safeprojectname$Token" TaskName="_default">
+ <TemplateFlip>
+ <SmallImageURI IsResource="false" IsRelative="true">Background.png</SmallImageURI>
+ <Count>0</Count>
+ <BackgroundImageURI IsResource="false" IsRelative="true">Background.png</BackgroundImageURI>
+ <Title>$safeprojectname$</Title>
+ <BackContent></BackContent>
+ <BackBackgroundImageURI></BackBackgroundImageURI>
+ <BackTitle></BackTitle>
+ <LargeBackgroundImageURI></LargeBackgroundImageURI>
+ <LargeBackContent></LargeBackContent>
+ <LargeBackBackgroundImageURI></LargeBackBackgroundImageURI>
+ <DeviceLockImageURI></DeviceLockImageURI>
+ <HasLarge>false</HasLarge>
+ </TemplateFlip>
+ </PrimaryToken>
+ </Tokens>
+ <ScreenResolutions>
+ <ScreenResolution Name="ID_RESOLUTION_WVGA" />
+ <ScreenResolution Name="ID_RESOLUTION_WXGA" />
+ <ScreenResolution Name="ID_RESOLUTION_HD720P" />
+ </ScreenResolutions>
+ </App>
+</Deployment>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/SplashScreenImage.jpg
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/SplashScreenImage.jpg b/lib/cordova-wp8/templates/standalone/SplashScreenImage.jpg
new file mode 100644
index 0000000..d35501d
Binary files /dev/null and b/lib/cordova-wp8/templates/standalone/SplashScreenImage.jpg differ
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/VERSION
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/VERSION b/lib/cordova-wp8/templates/standalone/VERSION
new file mode 100644
index 0000000..9aa3464
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/VERSION
@@ -0,0 +1 @@
+2.7.0
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/config.xml
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/config.xml b/lib/cordova-wp8/templates/standalone/config.xml
new file mode 100644
index 0000000..170f9fe
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/config.xml
@@ -0,0 +1,49 @@
+<?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.
+#
+-->
+<widget>
+
+ <plugins>
+ <plugin name="Device"/>
+ <plugin name="Logger"/>
+ <plugin name="Compass"/>
+ <plugin name="Accelerometer"/>
+ <plugin name="Camera"/>
+ <plugin name="NetworkStatus"/>
+ <plugin name="Contacts"/>
+ <plugin name="DebugConsole" />
+ <plugin name="Echo"/>
+ <plugin name="File"/>
+ <plugin name="FileTransfer"/>
+ <plugin name="Geolocation"/>
+ <plugin name="Notification"/>
+ <plugin name="Media"/>
+ <plugin name="Capture"/>
+ <plugin name="SplashScreen"/>
+ <plugin name="Battery"/>
+ <plugin name="Globalization"/>
+ <plugin name="InAppBrowser"/>
+ </plugins>
+
+
+ <access origin="*"/>
+
+</widget>
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/build.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/build.bat b/lib/cordova-wp8/templates/standalone/cordova/build.bat
new file mode 100644
index 0000000..b48598a
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/clean.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/clean.bat b/lib/cordova-wp8/templates/standalone/cordova/clean.bat
new file mode 100644
index 0000000..1bafe1b
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy.sln
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy.sln b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy.sln
new file mode 100644
index 0000000..3305276
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
new file mode 100644
index 0000000..a52b532
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/CordovaDeploy.csproj
@@ -0,0 +1,96 @@
+<?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.5</TargetFrameworkVersion>
+ <TargetFrameworkProfile>
+ </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>
+ <Prefer32Bit>false</Prefer32Bit>
+ </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>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject>CordovaDeploy.DeployTool</StartupObject>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Smartdevice.Connectivity, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.Connectivity\v4.0_11.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.Connectivity.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Smartdevice.Connectivity.Interface, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.Connectivity.Interface\v4.0_11.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.Connectivity.Interface.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Smartdevice.MultiTargeting.Connectivity, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.MultiTargeting.Connectivity\v4.0_11.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.MultiTargeting.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>
+ <ItemGroup>
+ <None Include="app.config" />
+ </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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
new file mode 100644
index 0000000..c7e5e74
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Program.cs
@@ -0,0 +1,424 @@
+/*
+ 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 System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.IO;
+using System.Xml.XPath;
+using System.Xml;
+using System.Xml.Linq;
+using System.Globalization;
+// Windows Phone Emulator Libraries
+using Microsoft.SmartDevice.Connectivity;
+using Microsoft.SmartDevice.Connectivity.Interface;
+using Microsoft.SmartDevice.MultiTargeting.Connectivity;
+
+
+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()
+ {
+ // This is used when running in Visual Studio, the Command Window is created at launch, and disappears at the
+ // end of the program run, this let's us see the output before the window is closed.
+
+ /*
+ Console.WriteLine("\nPress ENTER to continue...");
+ Console.Read();
+ */
+ }
+
+ static void Log(string msg, bool error = false)
+ {
+ Debug.WriteLine(msg);
+ if (error)
+ {
+ Console.Error.WriteLine(msg);
+ }
+ else
+ {
+ Console.Out.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), true);
+ }
+ }
+ else
+ {
+ Log(string.Format("Error: the file {0} does not exist", manifestFilePath), true);
+ }
+ return appID;
+ }
+
+ static void ListDevices()
+ {
+ MultiTargetingConnectivity mtConn = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
+ Collection<ConnectableDevice> deviceList = mtConn.GetConnectableDevices();
+
+ for (int index = 0; index < deviceList.Count; index++)
+ {
+ ConnectableDevice d = deviceList[index];
+ string info = string.Format("{0} : {1} : {2}", index.ToString(), d.Id, d.Name);
+ Log(info);
+ }
+ }
+
+ static ConnectableDevice GetDeviceAtIndex(int index)
+ {
+ MultiTargetingConnectivity mtConn = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
+ Collection<ConnectableDevice> deviceList = mtConn.GetConnectableDevices();
+ return deviceList[index];
+ }
+
+ 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();
+ ReadWait();
+ 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)
+ {
+ return; // Logging of errors is done in ReadAppId
+ }
+
+ 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"), true);
+ ReadWait();
+ return;
+ }
+
+ try {
+ xapFilePath = Directory.GetFiles(root + @"\Bin\Debug", "*.xap").FirstOrDefault();
+ } catch (DirectoryNotFoundException e) {
+ try {
+ xapFilePath = Directory.GetFiles(root + @"\Bin\Release", "*.xap").FirstOrDefault();
+ } catch (DirectoryNotFoundException ex) {
+ Log(string.Format("Error: could not find project build directoy in {0}", root), true);
+ Log("make sure your app has been successfully built before deploying.", true);
+ }
+ }
+
+ if (string.IsNullOrEmpty(xapFilePath))
+ {
+ Log(string.Format("Error: could not find application .xap in folder {0}", root), true);
+ ReadWait();
+ return;
+ }
+
+ ConnectableDevice deviceConn = GetDeviceAtIndex(deviceIndex);
+ Log("Connecting to device :: " + deviceConn.Id + " : " + deviceConn.Name);
+ try
+ {
+ IDevice device = deviceConn.Connect();
+ IRemoteApplication app = null;
+ if (device.IsApplicationInstalled(appID))
+ {
+ Log("Uninstalling XAP from " + deviceConn.Name);
+ app = device.GetApplication(appID);
+ app.Uninstall();
+ }
+
+ Log("Installing app on " + deviceConn.Name);
+ app = device.InstallApplication(appID, appID, "NormalApp", iconFilePath, xapFilePath);
+
+ Log("Launching app on " + deviceConn.Name);
+ app.Launch();
+
+ // To Stop :
+ //app.TerminateRunningInstances();
+
+ device.Disconnect();
+
+ ReadWait();
+
+ }
+ catch (Exception ex)
+ {
+ Log("Error :: " + ex.Message, true);
+ }
+ }
+
+ // To read and write ISO storage files!! :
+ /*
+ try
+ {
+ IRemoteIsolatedStorageFile isoStore = app.GetIsolatedStore();
+ remoteIsolatedStorageFile.ReceiveFile("sourcePath", "destPath", true);
+ }
+ catch (Exception ex) { }
+ */
+
+ }
+ class Program
+ {
+ 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()
+ {
+ // This is used when running in Visual Studio, the Command Window is created at launch, and disappears at the
+ // end of the program run, this let's us see the output before the window is closed.
+
+ /*
+ Console.WriteLine("\nPress ENTER to continue...");
+ Console.Read();
+ */
+ }
+
+ static void Log(string msg, bool error = false)
+ {
+ Debug.WriteLine(msg);
+ if (error)
+ {
+ Console.Error.WriteLine(msg);
+ }
+ else
+ {
+ Console.Out.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), true);
+ }
+ }
+ else
+ {
+ Log(string.Format("Error: the file {0} does not exist", manifestFilePath), true);
+ }
+ return appID;
+ }
+
+ static void ListDevices()
+ {
+ MultiTargetingConnectivity mtConn = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
+ Collection<ConnectableDevice> deviceList = mtConn.GetConnectableDevices();
+
+ for (int index = 0; index < deviceList.Count; index++)
+ {
+ ConnectableDevice d = deviceList[index];
+ string info = string.Format("{0} : {1} : {2}", index.ToString(), d.Id, d.Name);
+ Log(info);
+ }
+ }
+
+ static ConnectableDevice GetDeviceAtIndex(int index)
+ {
+ MultiTargetingConnectivity mtConn = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
+ Collection<ConnectableDevice> deviceList = mtConn.GetConnectableDevices();
+ return deviceList[index];
+ }
+
+ 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();
+ ReadWait();
+ 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)
+ {
+ return; // Logging of errors is done in ReadAppId
+ }
+
+ 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"), true);
+ 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), true);
+ ReadWait();
+ return;
+ }
+
+ ConnectableDevice deviceConn = GetDeviceAtIndex(deviceIndex);
+ Log("Connecting to device :: " + deviceConn.Id + " : " + deviceConn.Name);
+ try
+ {
+ IDevice device = deviceConn.Connect();
+ IRemoteApplication app = null;
+ if (device.IsApplicationInstalled(appID))
+ {
+ Log("Uninstalling XAP from " + deviceConn.Name);
+ app = device.GetApplication(appID);
+ app.Uninstall();
+ }
+
+ Log("Installing app on " + deviceConn.Name);
+ app = device.InstallApplication(appID, appID, "NormalApp", iconFilePath, xapFilePath);
+
+ Log("Launching app on " + deviceConn.Name);
+ app.Launch();
+
+ // To Stop :
+ //app.TerminateRunningInstances();
+
+ device.Disconnect();
+
+ ReadWait();
+
+ }
+ catch (Exception ex)
+ {
+ Log("Error :: " + ex.Message, true);
+ }
+ }
+
+ // To read and write ISO storage files!! :
+ /*
+ try
+ {
+ IRemoteIsolatedStorageFile isoStore = app.GetIsolatedStore();
+ remoteIsolatedStorageFile.ReceiveFile("sourcePath", "destPath", true);
+ }
+ catch (Exception ex) { }
+ */
+ }
+}
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3c26c87
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/app.config
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/app.config b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/app.config
new file mode 100644
index 0000000..c5e1dae
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/CordovaDeploy/CordovaDeploy/app.config
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/build.js
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/build.js b/lib/cordova-wp8/templates/standalone/cordova/lib/build.js
new file mode 100644
index 0000000..9986a7e
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/build.js
@@ -0,0 +1,181 @@
+/*
+ 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 : Cleans and builds project in debug mode.");
+ Log(" --release : Cleans and 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(2);
+ }
+}
+
+// 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-WP8 Project:");
+ Log("\tConfiguration : Release");
+ Log("\tDirectory : " + path);
+
+ wscript_shell.CurrentDirectory = path;
+ exec_verbose('msbuild /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-wp8 for release.', true);
+ WScript.Quit(2);
+}
+
+// builds the project and .xap in debug mode
+function build_xap_debug(path) {
+ Log("Building Cordova-WP8 Project:");
+ Log("\tConfiguration : Debug");
+ Log("\tDirectory : " + path);
+
+ wscript_shell.CurrentDirectory = path;
+ exec_verbose('msbuild /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-wp8 for debugging.', true);
+ WScript.Quit(2);
+}
+
+
+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(2);
+ }
+ else if (args.Count() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(2);
+ }
+ 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(2);
+ }
+
+ if (args(0) == "--debug" || args(0) == "-d") {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\clean');
+ build_xap_debug(ROOT);
+ }
+ else if (args(0) == "--release" || args(0) == "-r") {
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\clean');
+ build_xap_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);
+ Usage();
+ WScript.Quit(2);
+ }
+}
+else {
+ Log("WARNING: [ --debug | --release ] not specified, defaulting to debug...");
+ build_xap_debug(ROOT);
+}
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/clean.js
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/clean.js b/lib/cordova-wp8/templates/standalone/cordova/lib/clean.js
new file mode 100644
index 0000000..3a8c871
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/clean.js
@@ -0,0 +1,124 @@
+/*
+ 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");
+ }
+}
+
+
+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() > 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);
+ Usage();
+ WScript.Quit(2);
+ }
+}
+else {
+ if (fso.FolderExists(ROOT)) {
+ Log("Cleaning cordova project...");
+ clean_project(ROOT);
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(2);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/deploy.js
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/deploy.js b/lib/cordova-wp8/templates/standalone/cordova/lib/deploy.js
new file mode 100644
index 0000000..29a3f7d
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/deploy.js
@@ -0,0 +1,326 @@
+/*
+ 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';
+
+//build types
+var NONE = 0,
+ DEBUG = 1,
+ RELEASE = 2,
+ NO_BUILD = 3;
+var build_type = NONE;
+
+
+// help function
+function Usage() {
+ Log("");
+ Log("Usage: run [ --device | --emulator | --target=<id> ] [ --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(" --target=<id> : Deploys and runs the project on the specified target.");
+ Log(" --debug : 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(" run");
+ Log(" run --emulator");
+ Log(" run --device");
+ Log(" run --target=7988B8C3-3ADE-488d-BA3E-D052AC9DC710");
+ Log(" run --device --release");
+ Log(" run --emulator --debug");
+ 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(2);
+ }
+}
+
+// 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(2);
+ }
+ 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(2);
+ }
+ }
+ else {
+ Log('ERROR: CordovaDeploy.sln not found, unable to compile CordovaDeploy tool.', true);
+ WScript.Quit(2);
+ }
+}
+
+// launches project on device
+function device(path)
+{
+ cordovaDeploy(path);
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('Deploying to device ...');
+ //TODO: get device ID from list-devices and deploy to first one
+ 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(2);
+ }
+}
+
+// launches project on emulator
+function emulator(path)
+{
+ cordovaDeploy(path);
+ if (fso.FileExists(path + CORDOVA_DEPLOY_EXE)) {
+ Log('Deploying to emulator ...');
+ //TODO: get emulator ID from list-emulators and deploy to first one
+ 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(2);
+ }
+}
+
+// builds and launches the project on the specified target
+function target(path, device_id) {
+ 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);
+ }
+ if (!out.StdErr.AtEndOfStream) {
+ var line = out.StdErr.ReadAll();
+ Log("Error calling CordovaDeploy : ", true);
+ Log(line, true);
+ WScript.Quit(2);
+ }
+ 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(2);
+ }
+ else {
+ Log('Error : CordovaDeploy Failed to find any devices', true);
+ Log('DEPLOY FAILED.', true);
+ WScript.Quit(2);
+ }
+ }
+}
+
+function build(path) {
+ switch (build_type) {
+ case DEBUG :
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\build --debug');
+ break;
+ case RELEASE :
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\build --release');
+ break;
+ case NO_BUILD :
+ break;
+ case NONE :
+ Log("WARNING: [ --debug | --release | --nobuild ] not specified, defaulting to --debug.");
+ exec_verbose('%comspec% /c ' + ROOT + '\\cordova\\build --debug');
+ break;
+ default :
+ Log("Build option not recognized: " + build_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) {
+ Log('Error: Too many arguments.', true);
+ Usage();
+ WScript.Quit(2);
+ }
+ else if (fso.FolderExists(ROOT)) {
+ if (args.Count() > 1) {
+ if (args(1) == "--release") {
+ build_type = RELEASE;
+ }
+ else if (args(1) == "--debug") {
+ build_type = DEBUG;
+ }
+ else if (args(1) == "--nobuild") {
+ build_type = NO_BUILD;
+ }
+ else {
+ Log('Error: \"' + args(1) + '\" is not recognized as a deploy option', true);
+ 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();
+ WScript.Quit(2);
+ }
+ }
+ }
+ else {
+ Log('Error: Project directory not found,', true);
+ Usage();
+ 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
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/install-device.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/install-device.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/install-device.bat
new file mode 100644
index 0000000..9507c36
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/install-device.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%deploy.js (
+ cscript "%full_path%deploy.js" %* --device --nobuild //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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/install-emulator.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/install-emulator.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/install-emulator.bat
new file mode 100644
index 0000000..b3ee451
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/install-emulator.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%deploy.js (
+ cscript "%full_path%deploy.js" %* --emulator --nobuild //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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/list-devices.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/list-devices.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/list-devices.bat
new file mode 100644
index 0000000..bf4492b
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/list-emulator-images.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/list-emulator-images.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/list-emulator-images.bat
new file mode 100644
index 0000000..3f571c7
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/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-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/list-started-emulators.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/list-started-emulators.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/list-started-emulators.bat
new file mode 100644
index 0000000..d779b5d
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/list-started-emulators.bat
@@ -0,0 +1,3 @@
+@ECHO OFF
+ECHO Sorry, list-started-emulators is not availible yet for Windows Phone. 1>&2
+EXIT /B 1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/log.js
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/log.js b/lib/cordova-wp8/templates/standalone/cordova/lib/log.js
new file mode 100644
index 0000000..0b4ea7d
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/log.js
@@ -0,0 +1,77 @@
+/*
+ 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);
+}
+
+
+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 {
+ Log("Error: \"" + args(0) + "\" is not recognized as a log option.", true);
+ Usage();
+ WScript.Quit(2);
+ }
+}
+else {
+ if (fso.FolderExists(ROOT)) {
+ log_output(ROOT);
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(2);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/start-emulator.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/start-emulator.bat b/lib/cordova-wp8/templates/standalone/cordova/lib/start-emulator.bat
new file mode 100644
index 0000000..19983fd
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/start-emulator.bat
@@ -0,0 +1,3 @@
+@ECHO OFF
+ECHO Sorry, start-emulator is not availible yet for Windows Phone. 1>&2
+EXIT /B 1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/lib/target-list.js
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/lib/target-list.js b/lib/cordova-wp8/templates/standalone/cordova/lib/target-list.js
new file mode 100644
index 0000000..805eea5
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/lib/target-list.js
@@ -0,0 +1,233 @@
+/*
+ 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(2);
+ }
+}
+
+// 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();
+ Log("Error calling CordovaDeploy : ", true);
+ Log(line, true);
+ WScript.Quit(2);
+ }
+ else {
+ if (!out.StdOut.AtEndOfStream) {
+ var line = out.StdOut.ReadAll();
+ var targets = line.split('\r\n');
+ //format (ID DESCRIPTION)
+ for (i in targets) {
+ // remove device index and separator colen
+ targets[i] = targets[i].replace(/\d*\s\:\s/, '').replace(/\:\s/, '');
+ }
+ return targets;
+ }
+ else {
+ Log('Error : CordovaDeploy Failed to find any devices', true);
+ WScript.Quit(2);
+ }
+ }
+}
+
+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(2);
+ }
+ }
+ else {
+ Log("ERROR: CordovaDeploy.sln not found, unable to compile CordovaDeploy tool.", true);
+ WScript.Quit(2);
+ }
+}
+
+
+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() > 1) {
+ Log("Error: Too many arguments.", true);
+ Usage();
+ WScript.Quit(2);
+ }
+ 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(2);
+ }
+
+ 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: \"" + args(0) + "\" is not recognized as a target-list option", true);
+ Usage();
+ WScript.Quit(2);
+ }
+ }
+ else {
+ Log("Error: Project directory not found,", true);
+ Usage();
+ WScript.Quit(2);
+ }
+}
+else {
+ Log("WARNING: target list not specified, showing all targets...");
+ list_targets(ROOT);
+}
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/log.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/log.bat b/lib/cordova-wp8/templates/standalone/cordova/log.bat
new file mode 100644
index 0000000..46dbe5c
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/log.bat
@@ -0,0 +1,3 @@
+@ECHO OFF
+ECHO Sorry, loging is yet supported for Windows Phone. 1>&2
+EXIT /B 1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/0fea2dd2/lib/cordova-wp8/templates/standalone/cordova/run.bat
----------------------------------------------------------------------
diff --git a/lib/cordova-wp8/templates/standalone/cordova/run.bat b/lib/cordova-wp8/templates/standalone/cordova/run.bat
new file mode 100644
index 0000000..b966856
--- /dev/null
+++ b/lib/cordova-wp8/templates/standalone/cordova/run.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%lib\deploy.js (
+ cscript "%full_path%lib\deploy.js" %* //nologo
+) ELSE (
+ ECHO.
+ ECHO ERROR: Could not find 'deploy.js' in cordova/lib, aborting...>&2
+ EXIT /B 1
+)