aboutsummaryrefslogtreecommitdiff
path: root/cordova/lib/list-devices
diff options
context:
space:
mode:
Diffstat (limited to 'cordova/lib/list-devices')
-rwxr-xr-xcordova/lib/list-devices67
1 files changed, 67 insertions, 0 deletions
diff --git a/cordova/lib/list-devices b/cordova/lib/list-devices
new file mode 100755
index 0000000..047d595
--- /dev/null
+++ b/cordova/lib/list-devices
@@ -0,0 +1,67 @@
+#!/usr/bin/env node
+
+/*
+ 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 Q = require('q'),
+ exec = require('child_process').exec;
+
+/**
+ * Gets list of connected iOS devices
+ * @return {Promise} Promise fulfilled with list of available iOS devices
+ */
+function listDevices() {
+ var commands = [
+ Q.nfcall(exec, 'system_profiler SPUSBDataType | sed -n -e \'/iPad/,/Serial/p\' | grep "Serial Number:" | awk -F ": " \'{print $2 " iPad"}\''),
+ Q.nfcall(exec, 'system_profiler SPUSBDataType | sed -n -e \'/iPhone/,/Serial/p\' | grep "Serial Number:" | awk -F ": " \'{print $2 " iPhone"}\''),
+ Q.nfcall(exec, 'system_profiler SPUSBDataType | sed -n -e \'/iPod/,/Serial/p\' | grep "Serial Number:" | awk -F ": " \'{print $2 " iPod"}\'')
+ ];
+
+ // wrap al lexec calls into promises and wait until they're fullfilled
+ return Q.all(commands).then(function (results) {
+ var accumulator = [];
+ results.forEach(function (result) {
+ var devicefound;
+ // Each command promise resolves with array [stout, stderr], and we need stdout only
+ // Append stdout lines to accumulator
+ devicefound = result[0].trim().split('\n');
+ if(devicefound && devicefound.length) {
+ devicefound.forEach(function(device) {
+ if (device) {
+ accumulator.push(device);
+ }
+ });
+ }
+ });
+ return accumulator;
+ });
+}
+
+exports.run = listDevices;
+
+// Check if module is started as separate script.
+// If so, then invoke main method and print out results.
+if (!module.parent) {
+ listDevices().then(function (devices) {
+ devices.forEach(function (device) {
+ console.log(device);
+ });
+ });
+} \ No newline at end of file