—# ABSTRACT: Force a package to stay in a stack
package
Pinto::Action::Pin;
use
Moose;
#------------------------------------------------------------------------------
our
$VERSION
=
'0.14'
;
# VERSION
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
has
targets
=> (
isa
=> TargetList,
traits
=> [
qw(Array)
],
handles
=> {
targets
=>
'elements'
},
required
=> 1,
coerce
=> 1,
);
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
sub
execute {
my
(
$self
) =
@_
;
my
$stack
=
$self
->stack;
for
my
$target
(
$self
->targets ) {
throw
"$target is not registered on stack $stack"
unless
my
$dist
=
$stack
->get_distribution(
target
=>
$target
);
$self
->notice(
"Pinning distribution $dist to stack $stack"
);
my
$did_pin
=
$dist
->pin(
stack
=>
$stack
);
push
@{
$self
->affected},
$dist
if
$did_pin
;
$self
->warning(
"Distribution $dist is already pinned to stack $stack"
)
unless
$did_pin
;
}
return
$self
;
}
#------------------------------------------------------------------------------
__PACKAGE__->meta->make_immutable;
#------------------------------------------------------------------------------
1;
__END__
=pod
=encoding UTF-8
=for :stopwords Jeffrey Ryan Thalhammer
=head1 NAME
Pinto::Action::Pin - Force a package to stay in a stack
=head1 VERSION
version 0.14
=head1 AUTHOR
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut