Hi Joe. On Sun, Apr 26, 2020 at 10:40:52PM -0700, Joe Perches wrote: > .yaml files can contain maintainer/author addresses and it seems > unlikely or unnecessary that individual MAINTAINER file section > entries for each .yaml file will be created. > > So dd the email addresses found in .yaml files to the default ^ add > get_maintainer output. > > The email addresses are marked with "(in file)" when using the > "--roles" or "--rolestats" options. > > Miscellanea: > > o Change $file_emails to $email_file_emails to avoid visual > naming conflicts with @file_emails > > Signed-off-by: Joe Perches <joe@xxxxxxxxxxx> Acked-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Tested-by: Sam Ravnborg <sam@xxxxxxxxxxxx> The patch did not apply on top of -rc3, but it was trivial to fix. Tested and works like a charm. Thanks for doing this! Sam > --- > scripts/get_maintainer.pl | 44 +++++++++++++++++++++++++++++--------------- > 1 file changed, 29 insertions(+), 15 deletions(-) > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl > index 6cbcd1..6d973f 100755 > --- a/scripts/get_maintainer.pl > +++ b/scripts/get_maintainer.pl > @@ -57,7 +57,7 @@ my $status = 0; > my $letters = ""; > my $keywords = 1; > my $sections = 0; > -my $file_emails = 0; > +my $email_file_emails = 0; > my $from_filename = 0; > my $pattern_depth = 0; > my $self_test = undef; > @@ -69,6 +69,12 @@ my $vcs_used = 0; > > my $exit = 0; > > +my @files = (); > +my @fixes = (); # If a patch description includes Fixes: lines > +my @range = (); > +my @keyword_tvi = (); > +my @file_emails = (); > + > my %commit_author_hash; > my %commit_signer_hash; > > @@ -266,7 +272,7 @@ if (!GetOptions( > 'pattern-depth=i' => \$pattern_depth, > 'k|keywords!' => \$keywords, > 'sections!' => \$sections, > - 'fe|file-emails!' => \$file_emails, > + 'fe|file-emails!' => \$email_file_emails, > 'f|file' => \$from_filename, > 'find-maintainer-files' => \$find_maintainer_files, > 'mpath|maintainer-path=s' => \$maintainer_path, > @@ -424,6 +430,22 @@ sub read_all_maintainer_files { > } > } > > +sub maintainers_in_file { > + my ($file) = @_; > + > + return if ($file =~ m@\bMAINTAINERS$@); > + > + if (-f $file && ($email_file_emails || $file =~ /\.yaml$/)) { > + open(my $f, '<', $file) > + or die "$P: Can't open $file: $!\n"; > + my $text = do { local($/) ; <$f> }; > + close($f); > + > + my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g; > + push(@file_emails, clean_file_emails(@poss_addr)); > + } > +} > + > # > # Read mail address map > # > @@ -504,12 +526,6 @@ sub read_mailmap { > > ## use the filenames on the command line or find the filenames in the patchfiles > > -my @files = (); > -my @fixes = (); # If a patch description includes Fixes: lines > -my @range = (); > -my @keyword_tvi = (); > -my @file_emails = (); > - > if (!@ARGV) { > push(@ARGV, "&STDIN"); > } > @@ -527,7 +543,7 @@ foreach my $file (@ARGV) { > $file =~ s/^\Q${cur_path}\E//; #strip any absolute path > $file =~ s/^\Q${lk_path}\E//; #or the path to the lk tree > push(@files, $file); > - if ($file ne "MAINTAINERS" && -f $file && ($keywords || $file_emails)) { > + if ($file ne "MAINTAINERS" && -f $file && $keywords) { > open(my $f, '<', $file) > or die "$P: Can't open $file: $!\n"; > my $text = do { local($/) ; <$f> }; > @@ -539,10 +555,6 @@ foreach my $file (@ARGV) { > } > } > } > - if ($file_emails) { > - my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g; > - push(@file_emails, clean_file_emails(@poss_addr)); > - } > } > } else { > my $file_cnt = @files; > @@ -923,6 +935,8 @@ sub get_maintainers { > print("\n"); > } > } > + > + maintainers_in_file($file); > } > > if ($keywords) { > @@ -1835,7 +1849,7 @@ tm toggle maintainers > tg toggle git entries > tl toggle open list entries > ts toggle subscriber list entries > -f emails in file [$file_emails] > +f emails in file [$email_file_emails] > k keywords in file [$keywords] > r remove duplicates [$email_remove_duplicates] > p# pattern match depth [$pattern_depth] > @@ -1960,7 +1974,7 @@ EOT > bool_invert(\$email_git_all_signature_types); > $rerun = 1; > } elsif ($sel eq "f") { > - bool_invert(\$file_emails); > + bool_invert(\$email_file_emails); > $rerun = 1; > } elsif ($sel eq "r") { > bool_invert(\$email_remove_duplicates); >