Add -w option to play command

This commit is contained in:
Marcin Kulik
2016-07-01 19:26:50 +02:00
parent 5a03634ca0
commit d665ebf556
3 changed files with 8 additions and 4 deletions

View File

@@ -23,7 +23,7 @@ def rec_command(args, config):
return RecordCommand(api, args.filename, args.command, args.title, args.yes, args.quiet, args.max_wait) return RecordCommand(api, args.filename, args.command, args.title, args.yes, args.quiet, args.max_wait)
def play_command(args, config): def play_command(args, config):
return PlayCommand(args.filename) return PlayCommand(args.filename, args.max_wait)
def upload_command(args, config): def upload_command(args, config):
api = Api(config.api_url, os.environ.get("USER"), config.api_token) api = Api(config.api_url, os.environ.get("USER"), config.api_token)
@@ -66,6 +66,7 @@ For help on a specifc command run:
# create the parser for the "play" command # create the parser for the "play" command
parser_play = subparsers.add_parser('play', help='Replay terminal session') parser_play = subparsers.add_parser('play', help='Replay terminal session')
parser_play.add_argument('-w', '--max-wait', help='limit terminal inactivity to max <sec> seconds (can be fractional)', type=positive_float)
parser_play.add_argument('filename') parser_play.add_argument('filename')
parser_play.set_defaults(func=play_command) parser_play.set_defaults(func=play_command)

View File

@@ -5,14 +5,15 @@ import asciinema.asciicast as asciicast
class PlayCommand(Command): class PlayCommand(Command):
def __init__(self, filename, player=None): def __init__(self, filename, max_wait, player=None):
Command.__init__(self) Command.__init__(self)
self.filename = filename self.filename = filename
self.max_wait = max_wait
self.player = player if player is not None else Player() self.player = player if player is not None else Player()
def execute(self): def execute(self):
try: try:
self.player.play(asciicast.load(self.filename)) self.player.play(asciicast.load(self.filename), self.max_wait)
except FileNotFoundError as e: except FileNotFoundError as e:
self.print_warning("Playback failed: %s" % str(e)) self.print_warning("Playback failed: %s" % str(e))

View File

@@ -3,8 +3,10 @@ import time
class Player: class Player:
def play(self, asciicast): def play(self, asciicast, max_wait=None):
for delay, text in asciicast.stdout: for delay, text in asciicast.stdout:
if max_wait and delay > max_wait:
delay = max_wait
time.sleep(delay) time.sleep(delay)
sys.stdout.write(text) sys.stdout.write(text)
sys.stdout.flush() sys.stdout.flush()