App-rlibperl

 view release on metacpan or  search on metacpan

t/lib/App/rlibperl/Tester.pm  view on Meta::CPAN

  my $perl = $Config{perlpath};
  if ($^O ne 'VMS') {
    $perl .= $Config{_exe}
      unless $perl =~ m/$Config{_exe}$/i;
  }
  $perl;
};
our $ARCHNAME = $Config{archname};

sub get_inc {
  my $perl = shift || $PERL;
  local $ENV{PERL5LIB};
  return split(/\t/, qx/$perl -e "\$, = qq[\\t]; print \@INC;"/);
}

sub named_tree {
  my ($name) = @_;
  my $dir = tempdir( CLEANUP => 1 );

  # resolve symlinks from /tmp -> /private/tmp
  $dir = realpath($dir)
    if $^O eq 'darwin';

  my %subdirs;
  if ( $name eq 'local::lib' ) {
    $subdirs{bin}  = [qw(bin)];
    $subdirs{arch} = [qw(lib perl5), $ARCHNAME];
    $subdirs{lib}  = [qw(lib perl5)];
  }
  elsif ( $name eq 'parent' ) {
    $subdirs{bin}  = [qw(bin)];
    $subdirs{lib}  = [qw(lib)];
  }
  elsif ( $name eq 'same' ) {
    $subdirs{lib}  = [qw(lib)];
  }
  else {
    die qq[Don't know how to build tree for '$name'];
  }
  $subdirs{bin}  ||= [];
  $subdirs{arch} ||= $subdirs{lib};

  $subdirs{$_} = catdir($dir, @{$subdirs{$_}})
    for keys %subdirs;

  mkpath([values %subdirs]);

  my $source = ['bin'];
  $source = [qw(blib script)] if -d 'blib';

  my $ext =
    $^O eq 'MSWin32' ? '.bat' :
    '';

  my %scripts = map { ($_ => catfile($subdirs{bin}, $_.$ext)) }
    @scripts;

  copy( catfile(@$source, $_.$ext), $scripts{$_} )
    for keys %scripts;

  chmod 0755, values %scripts;

  return {
    root => $dir,
    %subdirs,
    %scripts,
  };
}

sub make_file {
  my ($path, $text) = @_;
  my $file = ref($path) eq 'ARRAY' ? catfile(@$path) : $path;
  open my $fh, '>', $file
    or die "Failed to open $file for writing: $!";
  print $fh $text
    or die "Failed to write to $file: $!";
  close $fh
    or die "Failed to close $file: $!";
  return $file;
}

sub make_script {
  my $file = make_file(@_);
  chmod 0755, $file;
  return $file;
}

1;



( run in 1.078 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )