File Coverage

blib/lib/WWW/ARDB/CLI/Cmd/Enemy.pm
Criterion Covered Total %
statement 9 46 19.5
branch 0 14 0.0
condition 0 6 0.0
subroutine 3 4 75.0
pod 0 1 0.0
total 12 71 16.9


line stmt bran cond sub pod time code
1             package WWW::ARDB::CLI::Cmd::Enemy;
2             our $AUTHORITY = 'cpan:GETTY';
3              
4             # ABSTRACT: Show ARC enemy details command
5              
6 2     2   2720 use Moo;
  2         5  
  2         15  
7 2     2   926 use MooX::Cmd;
  2         5  
  2         14  
8 2     2   6136 use JSON::MaybeXS;
  2         4  
  2         1323  
9              
10             our $VERSION = '0.002';
11              
12              
13             sub execute {
14 0     0 0   my ($self, $args, $chain) = @_;
15 0           my $app = $chain->[0];
16              
17 0           my $id = $args->[0];
18 0 0         unless ($id) {
19 0           print "Usage: ardb enemy \n";
20 0           print "Example: ardb enemy wasp\n";
21 0           return;
22             }
23              
24 0           my $enemy = $app->api->arc_enemy($id);
25              
26 0 0         unless ($enemy) {
27 0           print "Enemy not found: $id\n";
28 0           return;
29             }
30              
31 0 0         if ($app->json) {
32 0           print JSON::MaybeXS->new(utf8 => 1, pretty => 1)->encode($enemy->_raw);
33 0           return;
34             }
35              
36 0           print "=" x 60 . "\n";
37 0           print $enemy->name . "\n";
38 0           print "=" x 60 . "\n\n";
39              
40 0           print "ID: " . $enemy->id . "\n";
41              
42 0 0         if ($enemy->icon) {
43 0           print "Icon: " . $enemy->icon_url . "\n";
44             }
45              
46 0 0         if ($enemy->image) {
47 0           print "Image: " . $enemy->image_url . "\n";
48             }
49              
50 0 0         if (@{$enemy->drop_table}) {
  0            
51 0           print "\nDrop Table:\n";
52 0           printf " %-25s %-12s %8s\n", 'Item', 'Rarity', 'Value';
53 0           print " " . "-" x 48 . "\n";
54              
55 0           for my $drop (@{$enemy->drop_table}) {
  0            
56             printf " %-25s %-12s %8s\n",
57             substr($drop->{name}, 0, 25),
58             $drop->{rarity} // '-',
59 0   0       $drop->{value} // '-';
      0        
60             }
61             }
62              
63 0 0         if (@{$enemy->related_maps}) {
  0            
64 0           print "\nLocations:\n";
65 0           for my $map (@{$enemy->related_maps}) {
  0            
66 0           print " - " . $map->{name} . "\n";
67             }
68             }
69              
70 0   0       print "\nLast Updated: " . ($enemy->updated_at // 'unknown') . "\n";
71             }
72              
73             1;
74              
75             __END__