App-grindperl

 view release on metacpan or  search on metacpan

lib/App/grindperl.pm  view on Meta::CPAN

    }
  }

  $self->do_cmd( "./Configure", $self->configure_args )
    or croak("Configure failed!");

  # save files back into cache if updated
  dir( $self->cache_dir )->mkpath;
  for my $f ( qw/config.sh Policy.sh/ ) {
    copy( $f, $self->cache_file($f) )
      if (! -f $self->cache_file($f)) || (-M $f > -M $self->cache_file($f));
  }

  return 1;
}

sub run {
  my ($self) = @_;

  if ( $self->opt->get_edit ) {
    my $cf_file = $self->config_file;
    if ( $ENV{EDITOR} ) {
      system( $ENV{EDITOR}, $cf_file )
          and die "Error editing config file: $!\n";
    }
    else {
      say "No EDITOR set. Edit $cf_file manually.";
    }
    exit 0;
  }

  die "This doesn't look like a perl source directory.\n"
    unless -f "perl.c";

  my $prefix = $self->prefix;
  die "Can't install to $prefix\: parent directory is not writeable\n"
    unless -w dir($prefix)->parent;

  if ( $self->is_git ) {
    $self->do_cmd("git clean -dxf")
  }
  else {
    $self->do_cmd("make distclean") if -f 'Makefile';
  }

  $self->configure;

  exit 0 if $self->opt->get_config; # config only

  my $test_jobs = $self->opt->get_testjobs;
  my $jobs = $self->opt->get_jobs;

  if ( $test_jobs ) {
    $ENV{TEST_JOBS} = $test_jobs if $test_jobs > 1;

    if ( $self->opt->get_porting ) {
      $self->vlog("Running 'make test_porting' with $test_jobs jobs");
      $self->do_cmd("make -j $jobs test_porting")
        or croak ("make test_porting failed");
    }
    elsif ( grep { /test_harness/ } do { local(@ARGV,$/) = "Makefile"; <>} ) {
      $self->vlog("Running 'make test_harness' with $test_jobs jobs");
      $self->do_cmd("make -j $jobs test_harness")
          or croak ("make test_harness failed");
    }
    else {
      $self->vlog("Running 'make test' with $test_jobs jobs");
      $self->do_cmd("make -j $jobs test")
          or croak ("make test failed");
    }
  }
  else {
    $self->vlog("Running 'make test_prep' with $test_jobs jobs");
    $self->do_cmd("make -j $jobs test_prep")
      or croak("make test_prep failed!");
  }

  if ( $self->opt->get_install ) {
    $self->vlog("Running 'make install'");
    $self->do_cmd("make install")
      or croak("make install failed!");
  }

  return 0; # usually passed to exit
}

1;

# ABSTRACT:  Guts of the grindperl tool


# vim: ts=2 sts=2 sw=2 et:

__END__

=pod

=encoding UTF-8

=head1 NAME

App::grindperl - Guts of the grindperl tool

=head1 VERSION

version 0.004

=head1 SYNOPSIS

  use App::grindperl;
  my $app = App::grindperl->new;
  exit $app->run;

=head1 DESCRIPTION

This module contains the guts of the L<grindperl> program.

=for Pod::Coverage new
opt
is_git
logfile

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.318 second using v1.00-cache-2.02-grep-82fe00e-cpan-c30982ac1bc3 )