xref: /freebsd/contrib/ntp/scripts/build/genAuthors.in (revision 43a5ec4eb41567cc92586503212743d89686d78f)
1#! @PATH_PERL@
2
3# DESCRIPTION
4#
5# Make sure we have the list of authors for git imports.
6# Call with the path to the Authors/ subdirectory.
7#
8# AUTHOR
9#
10#  Harlan Stenn
11#
12# LICENSE
13#
14#  This file is Copyright (c) 2016 Network Time Foundation
15#
16#  Copying and distribution of this file, with or without modification, are
17#  permitted in any medium without royalty provided the copyright notice,
18#  author attribution and this notice are preserved.  This file is offered
19#  as-is, without any warranty.
20
21use strict;
22use warnings;
23
24# Read in the list of known authors.
25# run:
26#  bk changes -and:USER: | sort -u
27# to get the list of users who have made commits.
28# Make sure that each of these users is in the set of known authors.
29# Make sure the format of that file is 1 or more lines of the form:
30#  user = User Name <user@place>
31#
32# If all of the above is true, exit 0.
33# If there are any problems, squawk and exit 1.
34
35my $bk_u = "bk changes -and:USER: | sort -u |";
36chomp(my $bk_root = `bk root`);
37my $A_dir = "$bk_root/BitKeeper/etc/Authors";
38my $A_file = "$bk_root/BitKeeper/etc/authors.txt";
39my %authors;
40my $problem = 0;
41
42die "bkroot: <$bk_root>, A_dir: <$A_dir>\n" if (! -r $A_dir);
43die "bkroot: <$bk_root>, A_file: <$A_file>\n" if (! -r $A_file);
44
45# Process the authors.txt file
46open(my $FILE, '<', $A_file) or die "Could not open <$A_file>: $!\n";
47while (<$FILE>) {
48  chomp;
49  if (/^([\S]+) = ([\V]+) <([\w.-]+\@[\w.-]+)>$/) {
50    # print "Got '$1 = $2 <$3>'\n";
51    $authors{$1} = "";
52  } else {
53    print "In $A_file: unrecognized line: '$_'\n";
54    $problem = 1;
55  }
56}
57close($FILE);
58
59#print "\%authors = ", join(' ', sort keys %authors), "\n";
60
61die "Fix the problem(s) noted above!\n" if $problem;
62
63# Process "bk changes ..."
64
65open(BKU, $bk_u) || die "$0: <$bk_u> failed: $!\n";
66while (<BKU>) {
67  chomp;
68  my $Name = $_;
69  my $name = lc;
70  # print "Got Name <$Name>, name <$name>\n";
71  if (!defined($authors{$Name})) {
72    $problem = 1;
73    print "<$Name> is not a defined author!\n";
74    open(my $FILE, '>>', "$A_dir/$name.txt") || die "Cannot create '$A_dir/$name.txt': $!\n";
75    print $FILE "$Name = \n";
76    close($FILE);
77  }
78}
79
80die "Fix the problem(s) noted above!\n" if $problem;
81
82# Local Variables:	**
83# mode:cperl		**
84# End:			**
85