3a46b56cf28435c50a20659c8da82a4cd773a93b
[kivitendo-erp.git] / modules / override / Devel / REPL / Plugin / PermanentHistory.pm
1 package Devel::REPL::Plugin::PermanentHistory;
2
3 use Moose::Role;
4 use namespace::clean -except => [ 'meta' ];
5 use File::Slurp;
6 use Data::Dumper;
7
8 has 'history_file' => ( is => 'rw' );
9
10 sub load_history {
11   my $self = shift;
12   my $file = shift;
13
14   $self->history_file( $file );
15
16   return unless $self->history_file && -f $self->history_file;
17
18   my @history =
19     map { chomp; $_ }
20     read_file($self->history_file);
21 #  print  Dumper(\@history);
22   $self->history( \@history );
23   $self->term->addhistory($_) for @history;
24 }
25
26 before 'DESTROY' => sub {
27   my $self = shift;
28
29   return unless $self->history_file;
30
31   write_file $self->history_file,
32     map { $_, $/ }
33     grep $_,
34     grep { !/^quit\b/ }
35     @{ $self->history };
36 };
37
38 1;
39