build/replace_header.pl (36 lines of code) (raw):
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;
use File::Basename;
use File::Slurp;
use Cwd qw(abs_path);
use v5.12;
my $root = dirname(abs_path(__FILE__ . '/..'));
my @dir_to_search = (
$root . '/lib',
$root . '/t',
$root . '/test',
$root . '/build',
$root . '/travis'
);
my $header = <<EOL;
# Licensed to Elasticsearch B.V under one or more agreements.
# Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
# See the LICENSE file in the project root for more information
EOL
my $long_header = <<EOL;
# Licensed to Elasticsearch B.V. under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Elasticsearch B.V. licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
EOL
my $shebang = '#!/usr/bin/env perl';
my @suffix = ('.pm', '.pl', '.t');
my %hash = map {$_ => 1} @suffix;
say "SEARCH for PERL files...";
find(\&replace_header, @dir_to_search);
say "END";
sub replace_header {
my ($filename, $dirs, $suffix) = fileparse($File::Find::name, @suffix);
return if !$hash{$suffix};
return if ($filename . $suffix eq $0);
my $file_content = read_file($File::Find::name);
if (index($file_content, $header) > -1) {
printf("\tReplace header to %s\n", $File::Find::name);
$file_content =~ s/$header/$long_header/;
write_file($File::Find::name, $file_content);
}
}