# ABSTRACT: Pull upstream distributions into the repository package Pinto::Action::Pull; use Moose; use MooseX::StrictConstructor; use MooseX::Types::Moose qw(Bool); use MooseX::MarkAsMethods ( autoclean => 1 ); use Try::Tiny; use Pinto::Util qw(throw); use Pinto::Types qw(TargetList); #------------------------------------------------------------------------------ our $VERSION = '0.14'; # VERSION #------------------------------------------------------------------------------ extends qw( Pinto::Action ); #------------------------------------------------------------------------------ has targets => ( isa => TargetList, traits => [qw(Array)], handles => { targets => 'elements' }, required => 1, coerce => 1, ); has no_fail => ( is => 'ro', isa => Bool, default => 0, ); #------------------------------------------------------------------------------ with qw( Pinto::Role::Committable Pinto::Role::Puller ); #------------------------------------------------------------------------------ sub execute { my ($self) = @_; my $stack = $self->stack; for my $target ( $self->targets ) { try { $self->repo->svp_begin; $self->notice( "Pulling target $target to stack $stack"); my ($dist, $did_pull, $did_pull_prereqs) = $self->pull( target => $target ); $self->notice("Target $target is already on stack $stack") unless $did_pull; push @{$self->affected}, $dist if $did_pull || $did_pull_prereqs; } catch { throw $_ unless $self->no_fail; $self->result->failed( because => $_ ); $self->repo->svp_rollback; $self->error($_); $self->error("Target $target failed...continuing anyway"); } finally { my ($error) = @_; $self->repo->svp_release unless $error; }; } $self->chrome->progress_done; return $self; } #------------------------------------------------------------------------------ __PACKAGE__->meta->make_immutable; #------------------------------------------------------------------------------ 1; __END__ =pod =encoding UTF-8 =for :stopwords Jeffrey Ryan Thalhammer =head1 NAME Pinto::Action::Pull - Pull upstream distributions into the repository =head1 VERSION version 0.14 =head1 AUTHOR Jeffrey Ryan Thalhammer =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