File Coverage

blib/lib/Pinto/Action/Unregister.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 24 24 100.0


line stmt bran cond sub pod time code
1             # ABSTRACT: Unregister packages from a stack
2              
3             package Pinto::Action::Unregister;
4              
5 2     2   1243 use Moose;
  2         6  
  2         23  
6 2     2   15233 use MooseX::StrictConstructor;
  2         7  
  2         30  
7 2     2   8562 use MooseX::Types::Moose qw(Bool);
  2         7  
  2         46  
8 2     2   9945 use MooseX::MarkAsMethods ( autoclean => 1 );
  2         8  
  2         26  
9              
10 2     2   8165 use Pinto::Util qw(throw);
  2         4  
  2         152  
11 2     2   12 use Pinto::Types qw(TargetList);
  2         7  
  2         27  
12              
13             #------------------------------------------------------------------------------
14              
15             our $VERSION = '0.13'; # VERSION
16              
17             #------------------------------------------------------------------------------
18              
19             extends qw( Pinto::Action );
20              
21             #------------------------------------------------------------------------------
22              
23             has targets => (
24             isa => TargetList,
25             traits => [qw(Array)],
26             handles => { targets => 'elements' },
27             required => 1,
28             coerce => 1,
29             );
30              
31             has force => (
32             is => 'ro',
33             isa => Bool,
34             default => 0,
35             );
36              
37             #------------------------------------------------------------------------------
38              
39             with qw( Pinto::Role::Committable );
40              
41             #------------------------------------------------------------------------------
42              
43             sub execute {
44             my ($self) = @_;
45              
46             my $stack = $self->stack;
47              
48             for my $target ( $self->targets ) {
49              
50             throw "Target $target is not registered on stack $stack"
51             unless my $dist = $stack->get_distribution( target => $target );
52              
53             $self->notice("Unregistering distribution $dist from stack $stack");
54              
55             $dist->unregister( stack => $stack, force => $self->force );
56             push @{$self->affected}, $dist;
57             }
58              
59             return $self;
60             }
61              
62             #------------------------------------------------------------------------------
63              
64             __PACKAGE__->meta->make_immutable;
65              
66             #------------------------------------------------------------------------------
67              
68             1;
69              
70             __END__
71              
72             =pod
73              
74             =encoding UTF-8
75              
76             =for :stopwords Jeffrey Ryan Thalhammer
77              
78             =head1 NAME
79              
80             Pinto::Action::Unregister - Unregister packages from a stack
81              
82             =head1 VERSION
83              
84             version 0.13
85              
86             =head1 AUTHOR
87              
88             Jeffrey Ryan Thalhammer <jeff@stratopan.com>
89              
90             =head1 COPYRIGHT AND LICENSE
91              
92             This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
93              
94             This is free software; you can redistribute it and/or modify it under
95             the same terms as the Perl 5 programming language system itself.
96              
97             =cut