App-FargateStack
view release on metacpan or search on metacpan
lib/App/ECR.pm view on Meta::CPAN
package App::ECR;
use strict;
use warnings;
use Carp;
use English qw(-no_match_vars);
use Role::Tiny::With;
with 'App::AWS';
__PACKAGE__->follow_best_practice;
__PACKAGE__->mk_accessors(qw(profile region));
use parent qw(App::Command);
########################################################################
sub describe_images {
########################################################################
my ( $self, $repository_name, $query ) = @_;
return $self->command(
'describe-images' => [
'--repository-name' => $repository_name,
$query ? ( '--query' => $query ) : ()
]
);
}
########################################################################
sub get_latest_image {
########################################################################
my ( $self, $repository_name ) = @_;
if ( $repository_name =~ /\//xsm ) {
$repository_name = ( split /\//xsm, $repository_name )[-1];
}
($repository_name) = split /:/xsm, $repository_name;
my $query = 'imageDetails[?imageTags != null && contains(imageTags, `latest`)]';
my $result = $self->describe_images( $repository_name, $query );
return @{ $result || [] };
}
########################################################################
sub validate_images {
########################################################################
my ( $self, @images ) = @_;
foreach my $image (@images) {
warn sprintf "WARN: image not found in ECR: [%s]\n", $image
if !$self->get_latest_image($image);
}
return;
}
1;
( run in 0.572 second using v1.01-cache-2.11-cpan-39bf76dae61 )