The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
# ABSTRACT: record interactive terminal sessions
# PODNAME: ttyrec

use App::Ttyrec;
use Getopt::Long;


my $cmd = $ENV{SHELL} || '/bin/sh';
my $append;

sub usage {
    my ($exit) = @_;

    my $out = $exit ? \*STDERR : \*STDOUT;

    print { $out }
          "$0 [-a] [-e <cmd>] [output_file]\n";

    exit($exit);
}

GetOptions(
    'execute=s' => \$cmd,
    'append'    => \$append,
    'uudecode'  => sub { die "uudecode mode not supported. "
                           . "Why are you not just using scp?\n" },
    'help'      => sub { usage(0) },
) || usage(1);

App::Ttyrec->new(
    ttyrec_file => ($ARGV[0] || 'ttyrecord'),
    append      => $append,
)->run($cmd);

__END__

=pod

=head1 NAME

ttyrec - record interactive terminal sessions

=head1 VERSION

version 0.02

=head1 SYNOPSIS

  ttyrec foo.ttyrec
  ttyrec -e 'nethack' nethack.ttyrec
  ttyrec -a

=head1 DESCRIPTION

This is an implementation of the C<ttyrec> program for recording terminal
sessions. All data that the program running in the terminal produces is
recorded, along with timing information, so that it can be replayed later (via
a ttyrec player such as the C<ttyplay> script distributed with
C<Term::TtyRec::Plus>).

This program is intended to be mostly a drop-in replacement for the C<ttyrec>
program distributed L<here|http://0xcc.net/ttyrec/index.html.en>.

=head1 OPTIONS

  ttyrec [-a] [-e <cmd>] [output_file]

=over 4

=item -a

Append to the ttyrec file, rather than overwriting it.

=item -e <cmd>

Execute <cmd>, rather than a shell. Defaults to C<$SHELL> or C</bin/sh>.

=item output_file

The file to write the ttyrec data to. This can be a named pipe. Defaults to
C<ttyrecord>.

=back

=head1 SEE ALSO

L<http://0xcc.net/ttyrec/index.html.en>

=head1 AUTHOR

Jesse Luehrs <doy@tozt.net>

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2014 by Jesse Luehrs.

This is free software, licensed under:

  The MIT (X11) License

=cut