Autoconf-Template

 view release on metacpan or  search on metacpan

bin/autoconf-template-perl  view on Meta::CPAN

  my (@files) = @_;

  return $EMPTY
    if !@files;

  my $list = join " \\\n    ", @files;

  return "\\\n    " . $list;
}

########################################################################
sub find_resources {
########################################################################
  my ($options) = @_;

  my $root = $options->{root};

  my @resources;

  find(
    sub {
      return if /^Makefile/xsm || -d $File::Find::name;

      my $file = $File::Find::name;

      DEBUG Dumper( [ file => $file ] );

      $file =~ s/$root\/resources\///xsm;

      DEBUG Dumper( [ file => $file ] );

      push @resources, $file;
    },
    "$root/resources"
  );

  return \@resources;
}

########################################################################
sub init_parameters {
########################################################################
  my ($options) = @_;

  my @now = localtime;
  $now[5] += 1900;
  $now[4] += 1;

  my $root = $options->{root};

  my %timestamp = timestamp();

  $options->{date}      = $timestamp{date};
  $options->{timestamp} = $timestamp{timestamp};

  # Fri Feb 10 14:16:12 2023
  $options->{version}   = '2.1.0';   ## no critic (RequireInterpolation)
  $options->{generator} = basename $PROGRAM_NAME;

  # convenience routines for TT
  # creates a list that looks like this:
  # FOO = \
  #     ITEM \
  #     ITEM \
  #     ITEM

  $options->{makefile_am_list}         = \&makefile_am_list;
  $options->{makefile_am_flatten_list} = \&makefile_am_flatten_list;

  if ( $options->{refresh} ) {
    # main() prepped 'destdir', 'project' for refresh option from
    # abs_top_srcdir in Makefile, so we should be certain that root
    # for refresh is correct...

    my $resources = find_resources($options);

    $options->{'strip-dir'} = sprintf '%s/%s', $options->{root}, 'resources';
    create_target_file_list( $options, [ resources => $resources ] );

    # refresh the list of files for 'built' assets look for .in files
    # in each directory, presumably someone dropped a new .in file in
    # one of these and wants to refresh the Makefile.am

    my %html_files = (
      html       => [ 'htdocs',     ['html'] ],
      javascript => [ 'javascript', ['js'] ],
      css        => [ 'css',        ['css'] ],
      image      => [ 'image',      [qw(png gif jpeg jpg)] ],
    );

    foreach ( keys %html_files ) {
      my $file_list = $_ . '_files';

      $options->{$file_list} = [];

      my ( $subdir, $ext_list ) = @{ $html_files{$_} };

      foreach my $file_type ( @{$ext_list} ) {

        my @files = find_files_of_type(
          path => "$root/src/main/html/$subdir",
          type => $file_type,
        );

        push @{ $options->{$file_list} }, map { basename $_ } @files;
      }
    }

    $options->{bash_scripts}
      = [ find_files( "$root/src/main/bash/bin", 'sh', $TRUE ) ];

    $options->{perl_scripts}
      = [ find_files( "$root/src/main/perl/bin", 'pl', $TRUE ) ];

    $options->{cgi_scripts}
      = [ find_files( "$root/src/main/perl/cgi-bin", 'pl', $TRUE ) ];

    $options->{perl_modules}
      = [ find_files( "$root/src/main/perl/lib", 'pm', $TRUE ) ];

    TRACE Dumper( [ perl_modules => $options->{perl_modules} ] );



( run in 1.833 second using v1.01-cache-2.11-cpan-39bf76dae61 )