#!/usr/bin/env perl # Licensed to Elasticsearch under one or more contributor # license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright # ownership. Elasticsearch licenses this file to you under # the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on # an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, # either express or implied. See the License for the specific # language governing permissions and limitations under the License. use strict; use warnings; use HTTP::Tiny; use IO::Socket::SSL 1.52; use utf8; my $Github_Key = load_github_key(); my $Base_URL = "https://${Github_Key}api.github.com/repos/"; my $User_Repo = 'elastic/elasticsearch/'; my $Issue_URL = "http://github.com/${User_Repo}issues/"; my @Groups = qw( breaking deprecation feature enhancement bug regression upgrade build doc test ); my %Group_Labels = ( breaking => 'Breaking changes', build => 'Build', deprecation => 'Deprecations', docs => 'Docs', feature => 'New features', enhancement => 'Enhancements', bug => 'Bug fixes', regression => 'Regressions', test => 'Tests', upgrade => 'Upgrades', other => 'NOT CLASSIFIED', ); use JSON(); use Encode qw(encode_utf8); my $json = JSON->new->utf8(1); my %All_Labels = fetch_labels(); my $version = shift @ARGV or dump_labels(); dump_labels("Unknown version '$version'") unless $All_Labels{$version}; my $issues = fetch_issues($version); dump_issues( $version, $issues ); #=================================== sub dump_issues { #=================================== my $version = shift; my $issues = shift; $version =~ s/v//; my ( $day, $month, $year ) = (gmtime)[ 3 .. 5 ]; $month++; $year += 1900; print <<"HTML";
HTML for my $group ( @Groups, 'other' ) { my $group_issues = $issues->{$group} or next; print "$1
}g;
if ( $issue->{state} eq 'open' ) {
$title .= " [OPEN]";
}
unless ( $issue->{pull_request} ) {
$title .= " [ISSUE]";
}
my $number = $issue->{number};
print encode_utf8( $prefix
. $title
. qq[ #${number}] );
if ( my $related = $issue->{related_issues} ) {
my %uniq = map { $_ => 1 } @$related;
print keys %uniq > 1
? " (issues: "
: " (issue: ";
print join ", ",
map {qq[#${_}]}
sort keys %uniq;
print ")";
}
print "