GitHub-MergeVelocity
view release on metacpan or search on metacpan
lib/GitHub/MergeVelocity/Repository.pm view on Meta::CPAN
return $user;
},
);
sub _build_report {
my $self = shift;
my $pulls = $self->_get_pull_requests;
my $total = $pulls ? scalar @{$pulls} : 0;
my %summary = ( total_velocity => 0 );
foreach my $pr ( @{$pulls} ) {
$summary{ $pr->state }++;
$summary{ $pr->state . '_age' } += $pr->age;
$summary{total_velocity} += $pr->velocity;
}
return GitHub::MergeVelocity::Repository::Statistics->new(%summary);
}
## no critic (ValuesAndExpressions::ProhibitAccessOfPrivateData)
sub _get_pull_requests {
my $self = shift;
my $result = $self->github_client->list(
user => $self->user,
repo => $self->name,
params => { per_page => 100, state => 'all' },
);
$result->auto_pagination(1);
my @pulls;
while ( my $row = $result->next ) {
# GunioRobot seems to create pull requests that clean up whitespace
next if !$row->{user} || $row->{user}->{login} eq 'GunioRobot';
my $pull_request
= GitHub::MergeVelocity::Repository::PullRequest->new(
created_at => $row->{created_at},
$row->{closed_at} ? ( closed_at => $row->{closed_at} ) : (),
$row->{merged_at} ? ( merged_at => $row->{merged_at} ) : (),
number => $row->{number},
title => $row->{title},
);
push @pulls, $pull_request;
}
return \@pulls;
}
## use critic
sub _parse_github_url {
my $self = shift;
my $uri = URI->new(shift);
my @parts = split m{/}, $uri->path;
# paths may or may not have a leading slash (absolute vs relative)
my $user = shift @parts || shift @parts;
my $name = shift @parts;
$name =~ s{\.git}{};
return ( $user, $name );
}
1;
=pod
=encoding UTF-8
=head1 NAME
GitHub::MergeVelocity::Repository - Encapsulate pull request data for a repository
=head1 VERSION
version 0.000009
=head1 AUTHOR
Olaf Alders <olaf@wundercounter.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Olaf Alders.
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
__END__
# ABSTRACT: Encapsulate pull request data for a repository
( run in 1.052 second using v1.01-cache-2.11-cpan-71847e10f99 )