When there is data on stdin we use it instead of adb

This commit is contained in:
Brennan Taylor
2014-07-15 13:32:36 -07:00
parent 00fe21b76b
commit 0827fafb44
+13 -3
View File
@@ -22,11 +22,11 @@ limitations under the License.
# Package filtering and output improvements by Jake Wharton, http://jakewharton.com
import argparse
import sys
import re
import subprocess
from subprocess import PIPE
LOG_LEVELS = 'VDIWEF'
LOG_LEVELS_MAP = dict([(LOG_LEVELS[i], i) for i in range(len(LOG_LEVELS))])
parser = argparse.ArgumentParser(description='Filter logcat by package name')
@@ -158,13 +158,23 @@ adb_command.append('logcat')
# Clear log before starting logcat
if args.clear_logcat:
adb_clear_command = list(adb_command)
adb_clear_command.append('-c')
adb_clear_command.append('-c')
adb_clear = subprocess.Popen(adb_clear_command)
while adb_clear.poll() is None:
pass
adb = subprocess.Popen(adb_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
# This is a ducktype of the subprocess.Popen object
class FakeStdinProcess():
def __init__(self):
self.stdout = sys.stdin
def poll(self):
return None
if sys.stdin.isatty():
adb = subprocess.Popen(adb_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
else:
adb = FakeStdinProcess()
pids = set()
last_tag = None
app_pid = None