Dist-Zilla-PluginBundle-ROKR
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/UpdateGitHub.pm view on Meta::CPAN
package Dist::Zilla::Plugin::UpdateGitHub;
BEGIN {
$Dist::Zilla::Plugin::UpdateGitHub::VERSION = '0.0019';
}
# ABSTRACT: Update your github repository description from abstract on release
use Moose;
with qw/ Dist::Zilla::Role::Releaser /;
use Config::Identity::GitHub;
use LWP::UserAgent;
my $agent = LWP::UserAgent->new;
sub update {
my $self = shift;
my %given = @_;
my ( $login, $token, $repository, $description );
( $repository, $description ) = @given{qw/ repository description /};
defined $_ && length $_ or die "Missing repository" for $repository;
defined $_ && length $_ or die "Missing description" for $description;
( $login, $token ) = @given{qw/ login token /};
unless( defined $token && length $token ) {
my %identity = Config::Identity::GitHub->load;
( $login, $token ) = @identity{qw/ login token /};
}
for ( $login, $token ) {
unless ( defined $_ and length $_ ) {
$self->log( 'Missing GitHub login and/or token' );
return;
}
}
my $uri = "https://github.com/api/v2/json/repos/show/$login/$repository";
my $response = $agent->post( $uri,
[ login => $login, token => $token, 'values[description]' => $description ] );
unless ( $response->is_success ) {
die $response->status_line, "\n",
$response->decoded_content;
}
return $response;
}
sub release {
my ( $self ) = @_;
my $repository = $self->zilla->name;
my $description = $self->zilla->abstract;
eval {
if ( my $response = $self->update( repository => $repository, description => $description ) ) {
$self->log( "Updated github description:", $response->decoded_content );
}
};
$self->log( "Unable to update github description: $@" ) if $@;
}
__PACKAGE__->meta->make_immutable;
no Moose;
1;
__END__
=pod
=head1 NAME
Dist::Zilla::Plugin::UpdateGitHub - Update your github repository description from abstract on release
=head1 VERSION
version 0.0019
( run in 0.910 second using v1.01-cache-2.11-cpan-5623c5533a1 )