mirror of
https://github.com/appium/appium.git
synced 2026-04-28 14:30:27 -05:00
72 lines
1.7 KiB
JavaScript
72 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/* eslint no-console:0 */
|
|
|
|
/*
|
|
* Small tool, launching and monitoring ios-web-kit-proxy, and relaunching
|
|
* on predefined errors.
|
|
*
|
|
* Usage:
|
|
* ./bin/ios-webkit-debug-proxy-launcher.js [args]
|
|
* args: ios-webkit-debug-proxy args (they will be passed over)
|
|
*
|
|
* Example:
|
|
* ./bin/ios-webkit-debug-proxy-launcher.js -c <UDID>:27753 -d
|
|
*
|
|
* Note:
|
|
* For iOS8.1 try this first:
|
|
* brew install --HEAD ideviceinstaller
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const spawn = require('child_process').spawn;
|
|
const _ = require('lodash');
|
|
|
|
const args = process.argv.slice(2);
|
|
|
|
const RESTART_ON_MESSAGES = [
|
|
'Invalid message _rpc_applicationUpdated',
|
|
'Invalid message _rpc_applicationSentListing'];
|
|
|
|
const PROXY_CMD = 'ios_webkit_debug_proxy';
|
|
let proxy;
|
|
|
|
const handleKillProcess = function (exitCode) {
|
|
console.log('\nKilling proxy process!');
|
|
proxy.kill('SIGTERM');
|
|
process.exit((exitCode || 0));
|
|
};
|
|
|
|
const startProxy = function () {
|
|
console.log(`RUNNING: ${PROXY_CMD} ${args.join(' ')}`);
|
|
|
|
proxy = spawn(PROXY_CMD, args);
|
|
|
|
proxy.stdout.on('data', function onStdout (data) {
|
|
console.log(`stdout: ${data}`);
|
|
});
|
|
|
|
proxy.stderr.on('data', function onStderr (data) {
|
|
console.log(`stderr: ${data}`);
|
|
const restartMessage = _(RESTART_ON_MESSAGES).find(function findMessage (message) {
|
|
return ('' + data).indexOf(message) >= 0;
|
|
});
|
|
if (restartMessage) {
|
|
console.log(`Detected error message: ${restartMessage}`);
|
|
console.log('Killing proxy!');
|
|
proxy.kill('SIGTERM');
|
|
process.nextTick(startProxy);
|
|
}
|
|
});
|
|
|
|
proxy.on('close', function onClose (code) {
|
|
console.log(`Child process exited with code ${code}`);
|
|
});
|
|
};
|
|
|
|
process.on('SIGINT', handleKillProcess);
|
|
process.on('SIGTERM', handleKillProcess);
|
|
|
|
startProxy();
|