Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: ebcddeee22
Fetching contributors…

Cannot retrieve contributors at this time

file 59 lines (49 sloc) 1.237 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
package Angelos::Console::Plugin::History;
use Angelos::Plugin;
use File::Slurp;
use Path::Class;
use File::HomeDir;

around 'run' => sub {
    my $orig = shift;
    my ( $self, @args ) = @_;
    $self->read_history;
    $self->$orig(@args);
    $self->write_history;
};

sub _history_file {
    return file( File::HomeDir->my_home, '.angelos_history' )->stringify;
}

sub read_history {
    my $self = shift;
    my $term = $self->term;
    my $h = _history_file;

    if ( $term->Features->{readHistory} ) {
        $term->ReadHistory($h);
    }
    elsif ( $term->Features->{setHistory} ) {
        if ( -e $h ) {
            my @h = File::Slurp::read_file($h);
            chomp @h;
            $term->SetHistory(@h);
        }
    }
    else {

        # warn "Your ReadLine doesn't support setHistory\n";
    }

}

sub write_history {
    my $self = shift;
    my $term = $self->term;
    my $h = _history_file;

    if ( $term->Features->{writeHistory} ) {
        $term->WriteHistory($h);
    }
    elsif ( $term->Features->{getHistory} ) {
        my @h = map {"$_\n"} $term->GetHistory;
        File::Slurp::write_file( $h, @h );
    }
    else {

        # warn "Your ReadLine doesn't support getHistory\n";
    }
}

1;
Something went wrong with that request. Please try again.