mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 03:38:03 +01:00
Let pty recorder report elapsed time
This commit is contained in:
@@ -32,8 +32,8 @@ class writer():
|
||||
self.queue.put(None)
|
||||
self.process.join()
|
||||
|
||||
def write_stdin(self, data):
|
||||
def write_stdin(self, ts, data):
|
||||
pass
|
||||
|
||||
def write_stdout(self, data):
|
||||
def write_stdout(self, ts, data):
|
||||
self.queue.put(data)
|
||||
|
||||
@@ -176,17 +176,16 @@ class async_writer():
|
||||
args=(self.path, header, mode, self.queue)
|
||||
)
|
||||
self.process.start()
|
||||
self.start_time = time.time() - self.time_offset
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, exc_traceback):
|
||||
self.queue.put(None)
|
||||
self.process.join()
|
||||
|
||||
def write_stdin(self, data):
|
||||
ts = time.time() - self.start_time
|
||||
def write_stdin(self, ts, data):
|
||||
ts = ts + self.time_offset
|
||||
self.queue.put([ts, 'i', data])
|
||||
|
||||
def write_stdout(self, data):
|
||||
ts = time.time() - self.start_time
|
||||
def write_stdout(self, ts, data):
|
||||
ts = ts + self.time_offset
|
||||
self.queue.put([ts, 'o', data])
|
||||
|
||||
@@ -10,12 +10,14 @@ import signal
|
||||
import struct
|
||||
import sys
|
||||
import termios
|
||||
import time
|
||||
|
||||
from asciinema.term import raw
|
||||
|
||||
|
||||
def record(command, writer, env=os.environ, rec_stdin=False):
|
||||
master_fd = None
|
||||
start_time = None
|
||||
|
||||
def _set_pty_size():
|
||||
'''
|
||||
@@ -40,7 +42,7 @@ def record(command, writer, env=os.environ, rec_stdin=False):
|
||||
def _handle_master_read(data):
|
||||
'''Handles new data on child process stdout.'''
|
||||
|
||||
writer.write_stdout(data)
|
||||
writer.write_stdout(time.time() - start_time, data)
|
||||
_write_stdout(data)
|
||||
|
||||
def _write_master(data):
|
||||
@@ -56,7 +58,7 @@ def record(command, writer, env=os.environ, rec_stdin=False):
|
||||
_write_master(data)
|
||||
|
||||
if rec_stdin:
|
||||
writer.write_stdin(data)
|
||||
writer.write_stdin(time.time() - start_time, data)
|
||||
|
||||
def _signals(signal_list):
|
||||
old_handlers = []
|
||||
@@ -129,6 +131,8 @@ def record(command, writer, env=os.environ, rec_stdin=False):
|
||||
|
||||
_set_pty_size()
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
with raw(pty.STDIN_FILENO):
|
||||
try:
|
||||
_copy(pipe_r)
|
||||
|
||||
@@ -12,10 +12,10 @@ class FakeStdout:
|
||||
def __init__(self):
|
||||
self.data = []
|
||||
|
||||
def write_stdout(self, data):
|
||||
def write_stdout(self, ts, data):
|
||||
self.data.append(data)
|
||||
|
||||
def write_stdin(self, data):
|
||||
def write_stdin(self, ts, data):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user