[FFmpeg-devel] [PATCH v2 1/1] tools/general_assembly.pl - add options to print names, emails or both

Stefano Sabatini stefasab at gmail.com
Tue Nov 7 01:53:14 EET 2023


On date Monday 2023-11-06 18:41:54 +0000, ffmpeg-devel Mailing List wrote:
> Signed-off-by: Cosmin Stejerean <cosmin at cosmin.at>
> ---
>  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..8204d89794 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;

while at it:

use Pod::Usage;
...
Getopt::Long::Configure ("bundling");
...
    'help|usage|h' => sub { pod2usage( -verbose => 1, -exitval => 0) },

> +}
> +
> +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);
> +    }

LGTM anyway.


More information about the ffmpeg-devel mailing list