#
# InspIRCd -- Internet Relay Chat Daemon
#
-# Copyright (C) 2020 Sadie Powell <sadie@witchery.services>
+# Copyright (C) 2020-2021 Sadie Powell <sadie@witchery.services>
#
# This file is part of InspIRCd. InspIRCd is free software: you can
# redistribute it and/or modify it under the terms of the GNU General Public
#
-BEGIN {
- require 5.10.0;
- unless (-f 'configure') {
- print "Error: $0 must be run from the main source directory!\n";
- exit 1;
- }
-}
-
-use feature ':5.10';
+use v5.10.0;
use strict;
use warnings FATAL => qw(all);
-use File::Util ();
-use FindBin qw($RealDir);
-use List::Util qw(uniq);
-use POSIX qw(strftime);
+use File::Basename qw(dirname);
+use File::Util ();
+use FindBin qw($RealDir);
+use List::Util qw(uniq);
+use POSIX qw(strftime);
-use lib $RealDir;
+use lib dirname $RealDir;
+use make::common;
use make::console;
my @ignored_revisions = (
'0b4285abd12323920d92fee51e199edd7527dbec', # adding copyright headers
'46a39046196f55b52336e19662bb7bac85b731ac', # adding copyright headers
+ '4a6fedd9324d87349a806c9c1d0ae6e7d3c1fd38', # mass-updating descriptions
'56375392ba94f2552bbeeeab4fd39e1e50295525', # sadie's name change
'bab14f0dd2345c9d7dcbc47c918563709e1ac094', # peavey breaking line endings
'f2acdbc3820f0f4f5ef76a0a64e73d2a320df91f', # peavey fixing line endings
);
-my @paths = File::Util->new->list_dir('.' => { recurse => 1 });
+my @paths = File::Util->new->list_dir(dirname($RealDir) => { recurse => 1 });
my @updated;
for my $path (@paths) {
next unless -f $path;
next if $path =~ /\/\./;
+ next if $path =~ /\/build\//;
next if $path =~ /\/vendor\//;
if (system "git ls-files --error-unmatch -- $path 1>/dev/null 2>/dev/null") {
- print_format "Skipping <|YELLOW $path|> as it has not been committed.\n" if defined $ENV{MKHEADERS_VERBOSE};
+ say STDERR console_format "Skipping <|YELLOW $path|> as it has not been committed." if defined $ENV{MKHEADERS_VERBOSE};
next;
}
close $fh;
if (defined $copyright) {
- print_format "Updating copyright headers in <|GREEN $path|>.\n" if defined $ENV{MKHEADERS_VERBOSE};
+ say console_format "Updating copyright headers in <|GREEN $path|>." if defined $ENV{MKHEADERS_VERBOSE};
my (%author, %authors);
my $ignored_args = join ' ', map { "--ignore-rev $_" } @ignored_revisions;
for my $line (split /\n+/, `git blame $ignored_args --incremental -w HEAD -- $path`) {
next unless scalar keys %author > 1;
my $display = sprintf "%s <%s>", $author{NAME}, $author{EMAIL};
$authors{$display} //= [];
- push $authors{$display}, $author{YEAR};
+ push @{$authors{$display}}, $author{YEAR};
for my $commit (uniq @{$author{COMMITS}}) {
my $details = `git rev-list --format=%B --max-count=1 $commit`;
while ($details =~ /co-authored-by: ([^<]+<[^>]+>)/gi) {
$authors{$1} //= [];
- push $authors{$1}, $author{YEAR};
+ push @{$authors{$1}}, $author{YEAR};
}
}
undef %author;
$last_year = $year;
} else {
if ($last_year == $start_year) {
- push @year_ranges, $last_year;
+ push @year_ranges, $last_year;
} else {
push @year_ranges, "$start_year-$last_year";
}
}
if (defined $last_year) {
if ($last_year == $start_year) {
- push @year_ranges, $last_year;
+ push @year_ranges, $last_year;
} else {
push @year_ranges, "$start_year-$last_year";
}
close $fh;
push @updated, $path;
} else {
- print_format "Skipping <|YELLOW $path|> as it contains no copyright headers.\n" if defined $ENV{MKHEADERS_VERBOSE};
+ say STDERR console_format "Skipping <|YELLOW $path|> as it contains no copyright headers." if defined $ENV{MKHEADERS_VERBOSE};
}
}
-system 'git', 'commit',
+execute 'git', 'commit',
'--author', 'InspIRCd Robot <noreply@inspircd.org>',
'--message', 'Update copyright headers.',
'--', @updated;