mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
adds log-ios and log-android cli commands
Summary: solves first part of #8186 Closes https://github.com/facebook/react-native/pull/8352 Differential Revision: D3475905 Pulled By: mkonicek fbshipit-source-id: 99f6aa15b92ba3192fa0b812d369bd7020469573
This commit is contained in:
committed by
Facebook Github Bot 2
parent
fe55dd1a9a
commit
39f524d8e5
77
local-cli/logIOS/logIOS.js
Normal file
77
local-cli/logIOS/logIOS.js
Normal file
@@ -0,0 +1,77 @@
|
||||
'use strict';
|
||||
|
||||
const chalk = require('chalk');
|
||||
const child_process = require('child_process');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const Promise = require('promise');
|
||||
|
||||
/**
|
||||
* Starts iOS device syslog tail
|
||||
*/
|
||||
function logIOS() {
|
||||
return new Promise((resolve, reject) => {
|
||||
_logIOS(resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
function _logIOS(resolve, reject) {
|
||||
let rawDevices;
|
||||
|
||||
try {
|
||||
rawDevices = child_process.execFileSync(
|
||||
'xcrun', ['simctl', 'list', 'devices', '--json'], {encoding: 'utf8'}
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(chalk.red(
|
||||
'xcrun invocation failed. Please check that Xcode is installed.'
|
||||
));
|
||||
reject(e);
|
||||
return;
|
||||
}
|
||||
|
||||
const { devices } = JSON.parse(rawDevices);
|
||||
|
||||
const device = _findAvailableDevice(devices);
|
||||
if (device === undefined) {
|
||||
console.log(chalk.red(
|
||||
'No active iOS device found'
|
||||
));
|
||||
reject();
|
||||
}
|
||||
|
||||
tailDeviceLogs(device.udid, reject);
|
||||
}
|
||||
|
||||
function _findAvailableDevice(devices) {
|
||||
for (const key of Object.keys(devices)) {
|
||||
for (const device of devices[key]) {
|
||||
if (device.availability === '(available)' && device.state === 'Booted') {
|
||||
return device;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function tailDeviceLogs(udid, reject) {
|
||||
const logDir = path.join(
|
||||
os.homedir(),
|
||||
'Library',
|
||||
'Logs',
|
||||
'CoreSimulator',
|
||||
udid,
|
||||
'asl',
|
||||
);
|
||||
|
||||
const log =
|
||||
child_process.spawnSync('syslog', ['-w', '-F', 'std', '-d', logDir], {stdio: 'inherit'});
|
||||
|
||||
if (log.error !== null) {
|
||||
console.log(chalk.red(
|
||||
'syslog invocation failed.'
|
||||
));
|
||||
reject(log.error);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = logIOS;
|
||||
Reference in New Issue
Block a user