Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
timer = setTimeout(function () {
// logs quieted down, go ahead and install
state = INSTALLING;
iosDevice.installApp(udid, appPath, function (err) {
if (err) {
emitter.emit('error', err);
trackOff();
logOff && logOff();
} else {
emitter.emit('installed');
}
callback(err);
});
}, 500);
} else if (state == INSTALLING) {
return magik(options, null, function (handle, options) {
if (!appPath) {
return handle.emit('error', new Error(__('Missing app path argument')));
}
if (!fs.existsSync(appPath)) {
return handle.emit('error', new Error(__('App path does not exist: ' + appPath)));
}
handle.stop = function () {}; // for stopping logging
iosDevice.installApp(udid, appPath, function (err) {
if (err) {
return handle.emit('error', err);
}
handle.emit('installed');
if (options.logPort) {
var logHandle = iosDevice
.log(udid, options.logPort)
.on('log', function (msg) {
handle.emit('log', msg);
})
.on('app-started', function () {
handle.emit('app-started');
})
.on('app-quit', function () {
process.nextTick(function () {
try {
logOff = iosDevice.log(udid, function (msg) {
if (state == PUMPING_LOG) {
// we create a timer here so that if we haven't received any messages for a
// half second, then the log must be caught up and we're ready to install
clearTimeout(timer);
timer = setTimeout(function () {
// logs quieted down, go ahead and install
state = INSTALLING;
iosDevice.installApp(udid, appPath, function (err) {
if (err) {
emitter.emit('error', err);
trackOff();
logOff && logOff();
} else {
emitter.emit('installed');
}
callback(err);
return emitter;
}
var appName = options.appName || path.basename(appPath).replace(/\.app$/, ''),
installedRegExp = new RegExp(' installd\\[.* Installing .*' + appId),
logRegExp = new RegExp(' ' + appName + '\\[(\\d+)\\][^:]+: (.*)'),
quitRegExp = new RegExp(' backboardd\\[[^:]+: Application .+\\:' + appId + '\\['),
lastLineWasOurs = false,
PUMPING_LOG = 1,
INSTALLING = 2,
INSTALLED = 3,
RUNNING = 4,
state = PUMPING_LOG,
timer = null,
logOff,
trackOff = iosDevice.trackDevices(function (err, devices) {
if (!devices.some(function (device) { return device.udid === udid; })) {
trackOff();
logOff && logOff();
if (state === RUNNING) {
emitter.emit('app-quit');
}
emitter.emit('disconnect');
}
});
process.nextTick(function () {
try {
logOff = iosDevice.log(udid, function (msg) {
if (state == PUMPING_LOG) {
// we create a timer here so that if we haven't received any messages for a
// half second, then the log must be caught up and we're ready to install
var err = new Error(__('Unsupported platform "%s"', process.platform));
emitter.emit('error', err);
callback(err);
});
return emitter;
}
if (cache && !options.bypassCache) {
process.nextTick(function () {
emitter.emit('detected', cache);
callback(null, cache);
});
return emitter;
}
iosDevice.devices(function (err, devices) {
process.nextTick(function () {
if (err) {
emitter.emit('error', err);
return callback(err);
}
cache = {
devices: JSON.parse(JSON.stringify(devices)),
issues: []
};
emitter.emit('detected', cache);
callback(null, cache);
});
});
iosDevice.installApp(udid, appPath, function (err) {
if (err) {
return handle.emit('error', err);
}
handle.emit('installed');
if (options.logPort) {
var logHandle = iosDevice
.log(udid, options.logPort)
.on('log', function (msg) {
handle.emit('log', msg);
})
.on('app-started', function () {
handle.emit('app-started');
})
.on('app-quit', function () {
handle.emit('app-quit');
})
.on('disconnect', function () {
handle.emit('disconnect');
})
.on('error', function (err) {
handle.emit('log-error', err);
});
exports.detectDevices = function detectDevices(finished) {
iosDevice.devices(function (err, devices) {
if (err) {
finished(err);
} else {
devices.unshift({
udid: 'itunes',
name: __('iTunes Sync')
});
finished(null, devices.map(function (d) {
d.id = d.udid;
return d;
}));
}
});
};
function checkAttachedDevices(info) {
if (process.argv.indexOf('--auto-device') !== -1) {
logger.info('Getting details of attached devices.');
iosDevice.devices(function(err, devices) {
logger.info("Found " + devices.length + " connected devices");
if (devices.length == 1) {
selectedDevice = devices[0];
logger.info('Attached device name: ' + selectedDevice.name);
device.name = selectedDevice.name;
device.UDID = selectedDevice.udid;
getPPDetails(info);
} else if (devices.length > 1) {
//prompt user to select the device
promptToSelectDevice(devices, function(selected) {
selectedDevice = JSON.parse(selected);
logger.info('Selected device name' + selectedDevice.name);
device.name = selectedDevice.name;
device.UDID = selectedDevice.udid;
addCliArg(cli, 'C', selectedDevice.udid);
getPPDetails(info);
return tailgate('ioslib:devices', () => new Promise((resolve, reject) => {
iosDevice.devices((err, devices) => {
return err ? reject(err) : resolve(devices.map(d => new Device(d)));
});
}));
}