File Coverage

blib/lib/WWW/ARDB/CLI/Cmd/Quests.pm
Criterion Covered Total %
statement 9 32 28.1
branch 0 10 0.0
condition 0 4 0.0
subroutine 3 4 75.0
pod 0 1 0.0
total 12 51 23.5


line stmt bran cond sub pod time code
1             package WWW::ARDB::CLI::Cmd::Quests;
2             our $AUTHORITY = 'cpan:GETTY';
3              
4             # ABSTRACT: List quests command
5              
6 2     2   2767 use Moo;
  2         6  
  2         14  
7 2     2   950 use MooX::Cmd;
  2         5  
  2         13  
8 2     2   6154 use MooX::Options;
  2         5  
  2         15  
9              
10             our $VERSION = '0.002';
11              
12              
13             option search => (
14             is => 'ro',
15             short => 's',
16             format => 's',
17             doc => 'Search quests by title',
18             );
19              
20              
21             option trader => (
22             is => 'ro',
23             short => 't',
24             format => 's',
25             doc => 'Filter by trader name',
26             );
27              
28              
29             sub execute {
30 0     0 0   my ($self, $args, $chain) = @_;
31              
32 0           my $app = $chain->[0];
33 0           my $quests = $app->api->quests;
34              
35             # Apply filters
36 0 0         if ($self->search) {
37 0           my $search = lc($self->search);
38 0           $quests = [ grep { index(lc($_->title), $search) >= 0 } @$quests ];
  0            
39             }
40              
41 0 0         if ($self->trader) {
42 0           my $trader = lc($self->trader);
43             $quests = [ grep {
44 0 0         $_->trader_name && index(lc($_->trader_name), $trader) >= 0
  0            
45             } @$quests ];
46             }
47              
48 0 0         if ($app->json) {
49 0           $app->output_json([ map { $_->_raw } @$quests ]);
  0            
50 0           return;
51             }
52              
53 0 0         if (@$quests == 0) {
54 0           print "No quests found.\n";
55 0           return;
56             }
57              
58 0           printf "%-35s %-15s %8s\n", 'Title', 'Trader', 'XP';
59 0           print "-" x 60 . "\n";
60              
61 0           for my $quest (@$quests) {
62 0   0       printf "%-35s %-15s %8s\n",
      0        
63             substr($quest->title, 0, 35),
64             substr($quest->trader_name // '-', 0, 15),
65             $quest->xp_reward // '-';
66             }
67              
68 0           print "\n" . scalar(@$quests) . " quests found.\n";
69             }
70              
71             1;
72              
73             __END__