From 575efc0406864542a65aa3f31ebe8eb0bbef5087 Mon Sep 17 00:00:00 2001 From: Cosmin Stejerean via ffmpeg-devel Date: Mon, 6 Nov 2023 18:41:54 +0000 Subject: [PATCH] tools/general_assembly.pl - add options to print names, emails or both Signed-off-by: Cosmin Stejerean Signed-off-by: Anton Khirnov --- tools/general_assembly.pl | 43 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/tools/general_assembly.pl b/tools/general_assembly.pl index 898a6262ef..e59ce0f350 100644 --- a/tools/general_assembly.pl +++ b/tools/general_assembly.pl @@ -6,9 +6,41 @@ use strict; use POSIX qw(strftime); use Encode qw(decode); use Data::Dumper; +use Getopt::Long; + +binmode(STDOUT, ":utf8"); sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s }; +sub print_help { + print "Usage: $0 [options]\n"; + print "Options:\n"; + print " --names Print only the names\n"; + print " --emails Print only the email addresses\n"; + print " --full Print both names and email addresses (default)\n"; + print " -h, --help Show this help message\n"; + exit; +} + +my $print_full = 1; +my $print_names = 0; +my $print_emails = 0; +my $help = 0; + +GetOptions( + "full" => \$print_full, + "names" => \$print_names, + "emails" => \$print_emails, + "help" => \$help, + "h" => \$help, +); + +print_help() if $help; + +if ($print_names || $print_emails) { + $print_full = 0; +} + my @shortlog = split /\n/, decode('UTF-8', `git log --pretty=format:"%aN <%aE>" --since="last 36 months" | sort | uniq -c | sort -r`, Encode::FB_CROAK); my %assembly = (); @@ -35,6 +67,13 @@ foreach my $line (@shortlog) { } printf("# %s %s", strftime("%Y-%m-%d", localtime), decode('UTF-8', `git rev-parse HEAD`, Encode::FB_CROAK)); -foreach my $email (sort values %assembly) { - printf("%s\n", $email); +foreach my $name (sort keys %assembly) { + my $email = $assembly{$name}; + if ($print_full) { + printf("%s <%s>\n", $name, $email); + } elsif ($print_names) { + printf("%s\n", $name); + } elsif ($print_emails) { + printf("%s\n", $email); + } }