diff mbox series

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

Message ID 0101018ba5f0f72f-9adc382e-3e73-4fa1-9b7e-8d18dd1a1a50-000000@us-west-2.amazonses.com
State Accepted
Commit 575efc0406864542a65aa3f31ebe8eb0bbef5087
Headers show
Series tools/general_assembly.pl - add options to print names, emails or both | expand

Checks

Context Check Description
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
yinshiyou/commit_msg_loongarch64 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Cosmin Stejerean Nov. 6, 2023, 6:41 p.m. UTC
Signed-off-by: Cosmin Stejerean <cosmin@cosmin.at>
---
 tools/general_assembly.pl | 43 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

Comments

Stefano Sabatini Nov. 6, 2023, 11:53 p.m. UTC | #1
On date Monday 2023-11-06 18:41:54 +0000, ffmpeg-devel Mailing List wrote:
> Signed-off-by: Cosmin Stejerean <cosmin@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.
Anton Khirnov Nov. 14, 2023, 5:47 p.m. UTC | #2
Pushed.

And sorry, I didn't notice that the ML mangled your email :/
diff mbox series

Patch

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