Autoconf-Template

 view release on metacpan or  search on metacpan

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

      s/$/.in/xsm;
    }

    $options->{$type} = [ map { basename $_ } @config_files ];
  }

  return $options;
}

########################################################################
sub render_templates {
########################################################################
  my ($parameters) = @_;

  my $file_list = $parameters->{file_list};
  my $templates = $file_list->{templates};

  my $exclude_templates = $parameters->{exclude_templates};

  for my $template ( keys %{$templates} ) {
    TRACE sprintf 'checking to see if we need to refresh: %s', $template;
    next if any { $template eq $_ } @{$exclude_templates};

    if ( $parameters->{refresh} ) {
      next if none { $template eq $_ } @{ $file_list->{refresh} };
    }

    TRACE sprintf 'refreshing: %s', $template;
    my ( $mode, $out, $cleanup );

    if ( ref $templates->{$template} ) {
      ( $mode, $out, $cleanup ) = @{ $templates->{$template} };
    }
    else {
      ( $mode, $out ) = ( undef, $templates->{$template} );
    }

    $out = sprintf '%s/%s', $parameters->{root}, $out;

    # resolve any variables in file names (@project@.spec.in), e.g.
    $out = do_subst( $out, $parameters );

    # preserve custom sections
    my $name = basename($out);

    if ( any { $name eq $_ } qw(Makefile.am perl-modules.inc perl-bin.inc perl-cgi-bin.inc) ) {
      my @custom_sections = extract_custom_sections($out);
      $parameters->{custom_sections} = \@custom_sections;
    }

    render_tt_template(
      { template   => $template,
        parameters => $parameters,
        outfile    => $out,
        cleanup    => $cleanup,
      }
    );

    if ( defined $mode && $mode ) {
      TRACE sprintf 'setting permissions of  %s to %s', $out, $mode // $EMPTY;
      chmod oct($mode), $out;
    }
  }

  return;
}

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

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

  my $m4_macro = sprintf '%s/autotools/ax_requirements_check.m4', $root;

  my $requirements_text = sprintf '%s/requires.txt',  $root;
  my $requirements_json = sprintf '%s/requires.json', $root;

  my %outfiles = (
    m4   => $m4_macro,
    text => $requirements_text,
    json => $requirements_json,
  );

  ## no critic (RequireInterpolationOfMetachars)
  my @ax_requirements_check = '/usr/local/bin/autoconf-ax-requirements-check';

  # set rootdir option
  push @ax_requirements_check, '-r', $root;

  if ( !$options->{'add-version-numbers'} ) {
    push @ax_requirements_check, '--no-add-version-numbers';
  }
  # pass along log-level...and quiet flag
  push @ax_requirements_check, '-l', $options->{'log-level'};

  push @ax_requirements_check, $options->{quiet} ? '-Q' : ();

  # create the JSON file first
  system @ax_requirements_check, '-o', $outfiles{'json'}, '-f', 'json';

  # create requirements file for each format using JSON file as input
  for my $format (qw( text m4 )) {
    system @ax_requirements_check, '-o', $outfiles{$format}, '-f', $format, '-i', $outfiles{'json'};
  }

  return;
}

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

  my @all_files;

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

  find(
    sub {

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

    };

  }

  my %index = (
    module_index => \%module_index,
    module_names => [ sort keys %module_index ],
  );

  my $readme = render_tt_template(
    'perl/lib/README.md.tt',
    { modules   => \%index,
      project   => $project,
      timestamp => scalar localtime,
    }
  );

  print {*STDOUT} $readme;

  return \%index;
}

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

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

  my $file_list = $options->{file_list}->{files};

  foreach my $file ( keys %{$file_list} ) {

    my ( $mode, $out )
      = ref $file_list->{$file}
      ? @{ $file_list->{$file} }
      : ( undef, $file_list->{$file} );

    $out ||= $file;
    $out = do_subst( $out, $options );

    my $dest_path;

    if ( $out =~ /\/$/xsm ) {
      $dest_path = sprintf '%s/%s/%s', $root, $out, $file;
    }
    else {
      $dest_path = sprintf '%s/%s', $root, $out;
    }

    create_path($dest_path);

    TRACE sprintf 'copying %s to %s', "$PROJECT_DIR/$file", $dest_path;

    croak "missing $file - perhaps you forgot to add it to Makefile.am?\n"
      if !-e "$PROJECT_DIR/$file";

    copy( "$PROJECT_DIR/$file", $dest_path );

    if ( defined $mode ) {
      TRACE sprintf 'chmod %s, %s', $mode, $dest_path;
      chmod oct($mode), $dest_path;
    }
  }

  return;
}

########################################################################
sub create_dependency_tree {
########################################################################
  my ( $dirs, $all_dependencies, $root ) = @_;

  my @modules;

  foreach my $dir ( sort keys %{$dirs} ) {
    my %module;

    my $path = $dir;
    $path =~ s{$root/?}{}xsm;

    $module{path} = $path;

    my $list = $dirs->{$dir};

    $module{list} = [];

    foreach my $file ( @{$list} ) {
      push @{ $module{list} }, $path ? "$path/$file" : $file;
    }

    my $module_name = $path;
    $module_name =~ s/\///xsm;
    $module{name_uc} = uc $module_name || 'PERL';
    $module{name_lc} = lc $module_name;

    $module{files}        = $list;
    $module{dependencies} = {};

    foreach my $file ( @{$list} ) {
      my $dependencies = [];

      DEBUG 'looking for ' . $path . $SLASH . $file;

      my $dep_file = $path . $SLASH . $file;
      $dep_file = strip_in($dep_file);
      $dep_file =~ s/^\///xsm;

      my @local_dependencies
        = @{ $all_dependencies->{$dep_file} || [] };

      next if !@local_dependencies;

      for my $dependency (@local_dependencies) {
        $dependency = strip_in($dependency);
        push @{$dependencies}, $dependency;
      }

      $module{dependencies}->{$file} = $dependencies;
    }

    push @modules, \%module;



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