Dist-Zilla-Plugin-GitHub-CreateRelease
view release on metacpan or search on metacpan
bin/createrelease.pl view on Meta::CPAN
};
#FIXME there must be a better way...
my $basename = URI::Escape::uri_unescape( File::Basename::basename(URI->new( $url[0])->path));
$basename =~ s/.git//;
$self->log("Release will be created using $basename");
return $basename;
}
method get_releases ($repo = '') {
my %identity = $self->get_identity ($org_id);
my $r = Pithub::Repos::Releases->new(
user => $identity{login},
repo => $self->get_repo_name(),
#token => $identity{token},
);
use DDP;
my $result = $r->list(
);
#p $result;
print $result->count, "\n\n\n";
use JSON::MaybeXS;
my $json_with_args = JSON::MaybeXS->new(utf8 => 1);
my $json = $json_with_args->decode_json($result->_json);
#my $list = $result->list;
print "==================================================\n";
#my @content = $list->raw_content;
#print $content[0], "\n";
#print "==================================================\n";
#foreach my $rel (@list) {
# p $rel;
# p $json;
#
#}
}
method create_release ($repo = '') {
my %identity = $self->get_identity ($org_id);
my $releases = Pithub::Repos::Releases->new(
user => $identity{login},
repo => $self->get_repo_name(),
token => $identity{token},
);
require JSON::MaybeXS;
my $response = $releases->create(
data => {
tag_name => $self->get_version(),
target_commitish => $branch,
name => $self->get_title(),
body => $self->get_notes(),
draft => $draft ? JSON::MaybeXS::true : JSON::MaybeXS::false,
prerelease => $trial ? JSON::MaybeXS::true : JSON::MaybeXS::false,
generate_release_notes => $github_notes,
}
);
die "Unable to create release for $identity{login}\\$releases->{repo}" if ($response->code eq '404');
#die "Validation failed, or the endpoint has been spammed." if ($response->code eq '422');
die "login or token invalid for the specified repository: $identity{login}\\$releases->{repo}\n"
if ($response->code eq '403');
if ($response->code ne '201') {
my $message = $response->raw_content();
print "message", $message, "\n";
$message =~ s/\n/ /gm;
my $error_message = decode_json $message;
for my $error (@{$error_message->{errors}}) {
print "Field: ", $error->{message}, " - ", $error->{code}, "\n";
}
die "See information at ", $error_message->{documentation_url}, "\n";
}
if (! defined $response->content->{id}) {
die "Unable to create GitHub release\n";
}
$self->log("Release created at $releases->{repo} for $identity{login}");
$filename = $self->get_dist_filename($self->get_version()) if ! $filename;
my $release_results;
if (! -e $filename) {
use MetaCPAN::Client;
my $mcpan = MetaCPAN::Client->new();
my $dist = Config::INI::Reader->read_file('dist.ini');
$release_results = $mcpan->release(
{
all => [
{
distribution => $dist->{'_'}{name},
},
]
}
);
while ( my $release = $release_results->next ) {
if ($release->{data}->{version} eq $self->get_version()) {
use LWP::Simple;
$filename = $release->{data}->{archive};
getstore($release->{data}->{download_url}, $filename);
}
}
die "Let's download the file from pause" if ( ! -e $filename);
}
my $cpan_tar = File::Slurper::read_binary($filename);
my $asset = $releases->assets->create(
release_id => $response->content->{id},
name => $filename,
data => $cpan_tar,
content_type => 'application/gzip',
);
my $tag = $self->get_version();
if ($asset->code eq '201') {
$self->log("CPAN archive appended to GitHub release: $tag");
} else {
$self->log("Unable to append CPAN archive GitHub release: $tag");
( run in 2.447 seconds using v1.01-cache-2.11-cpan-524268b4103 )