only weaken when required
[scpubgit/Tak.git] / lib / Tak / REPL.pm
CommitLineData
8b6c1f59 1package Tak::REPL;
2
3use Term::ReadLine;
4use Moo;
5
31a246e4 6has client => (is => 'ro', required => 1);
8b6c1f59 7
8sub run {
31a246e4 9 my $client = $_[0]->client;
8b6c1f59 10 my $read = Term::ReadLine->new('REPL');
11
12 while (1) {
13 my $line = $read->readline('re.pl$ ');
14 last unless defined $line;
15 next unless length $line;
31a246e4 16 my $result = $client->do(eval => $line);
17 print exists($result->{return})
18 ? $result->{return}
19 : "Error: ".$result->{exception};
20 if ($result->{stdout}) {
21 chomp($result->{stdout});
22 print "STDOUT:\n${\$result->{stdout}}\n";
8b6c1f59 23 }
31a246e4 24 if ($result->{stderr}) {
25 chomp($result->{stderr});
26 print "STDERR:\n${\$result->{stderr}}\n";
8b6c1f59 27 }
28 }
29}
6fd39562 30
311;