Run: github-release-message.pl sympa-community/sympa 6.2.70
.
#! /usr/bin/env perl
use strict;
use warnings;
use English qw(-no_match_vars);
use JSON;
use LWP;
use MIME::Entity;
use Text::Markdown qw();
my $repository_name = shift or die "Specify repository\n";
my $tag = shift or die "Specify tag\n";
my $request = HTTP::Request->new(
GET => sprintf(
'https://api.github.com/repos/%s/releases/tags/%s',
$repository_name, $tag
)
);
my $ua = LWP::UserAgent->new;
my $response = $ua->request($request);
my $json = $response->decoded_content;
my $release = decode_json($json);
my $plain = sprintf "%s\n====\n\n%s", $release->{name}, $release->{body};
my $html =
sprintf
"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<title>%s</title>\n</head>\n<body>%s</body>\n</html>",
($release->{name} =~ s/</\</gr),
Text::Markdown->new->markdown($plain);
my $entity = MIME::Entity->build(
Type => 'multipart/alternative',
Encoding => '8BIT',
To => 'announce@sympa.community',
Subject => $release->{name},
'X-Mailer' => sprintf('sympa-%s', $release->{tag_name})
);
$entity->attach(
Type => 'text/plain; Charset=UTF-8',
Encoding => '8BIT',
Data => $plain
);
$entity->attach(
Type => 'text/html; Charset=UTF-8',
Encoding => '8BIT',
Data => $html
);
print $entity->as_string;
__END__