#!/usr/bin/env perl
#
# This file is apart of SlapbirdAPM, a Free and Open-Source
# web application APM for Perl 5 web applications.
#
# Copyright (C) 2024  Mollusc Labs.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

use strict;
use warnings;

use Carp ();

my $header = do {
  local $/;
  open my $f, '<', 'header.LICENSE'
    or Carp::croak('Failed to open "header.LICENSE" file.');
  my $s = <$f>;
  close $f;
  $s;
};

my $file_stdout     = qx(find . -type f -name "*.pm");
my $bin_file_stdout = qx(find bin/ -type -f);

my @files = grep { /^(?:\.\/lib).*/sag; } map { chomp; $_ } split "\n",
  $file_stdout;

for my $file (@files) {
  local $/;
  my $f;
  open($f, '<', $file)
    or (warn "Something went wrong with file $file, skipping." && next);
  my $t = <$f>;
  close $f;

  next if (index($t, $header) != -1);

  CORE::say "Working on $file...";

  open($f, '>', $file)
    or (warn "Something went wrong with file $file, skipping." && next);
  print $f ($header . $t);
  close $f;
}

CORE::say 'DONE!';

exit 0;
