Badge-Depot-Plugin-Coverage
view release on metacpan or search on metacpan
lib/Badge/Depot/Plugin/Coverage.pm view on Meta::CPAN
use 5.10.0;
use strict;
use warnings;
use feature qw/say/;
package Badge::Depot::Plugin::Coverage;
use Moose;
use namespace::autoclean;
use MooseX::AttributeShortcuts;
use Types::Standard qw/Str Bool Num/;
use Types::URI qw/Uri/;
use JSON::MaybeXS 'decode_json';
use Path::Tiny;
use DateTime;
use DateTime::Format::RFC3339;
with 'Badge::Depot';
# ABSTRACT: Code coverage plugin for Badge::Depot
our $AUTHORITY = 'cpan:CSSON'; # AUTHORITY
our $VERSION = '0.0102';
has coverage => (
is => 'ro',
isa => Num,
required => 0,
predicate => 1,
);
has custom_image_url => (
is => 'ro',
isa => Uri,
coerce => 1,
default => 'https://img.shields.io/badge/%s-%s-%s.svg',
);
has text => (
is => 'ro',
isa => Str,
default => 'coverage',
);
has max_age => (
is => 'ro',
isa => 'Int',
default => '60',
documentation => q{Include coverage badge if the latest cover run was done less than 'max_age' minutes ago},
);
sub BUILD {
my $self = shift;
my $coverage = $self->determine_coverage;
if($coverage == -1) {
$self->log('! Could not determine coverage, skips Coverage badge');
return;
}
$coverage = sprintf '%.1f', $coverage;
my $color = $self->determine_color($coverage);
$self->image_url(sprintf $self->custom_image_url, $self->text, $coverage.'%25', $color);
$self->image_alt(sprintf '%s %s', $self->text, $coverage.'%');
$self->log("Adds coverage badge ($coverage%)");
}
sub determine_coverage {
my $self = shift;
return $self->coverage if $self->has_coverage;
my $log_file = path(qw/. .coverhistory.json/);
( run in 1.927 second using v1.01-cache-2.11-cpan-5837b0d9d2c )