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