App-githook-perltidy
view release on metacpan or search on metacpan
t/githook-perltidy.t view on Meta::CPAN
use strict;
use warnings;
use Carp qw/croak/;
use File::Copy;
use FindBin qw/$Bin/;
use Path::Tiny;
use Perl::Tidy;
use Pod::Tidy;
use Sys::Cmd qw/run/;
use Test::Fatal;
use Test::More;
use Test::TempDir::Tiny;
use Time::Piece;
my $sweetened = eval { require Perl::Tidy::Sweetened };
my $critic = eval { require Perl::Critic };
plan skip_all => 'No Git' unless eval { run(qw!git --version!); 1; };
my $pre_commit = path( '.git', 'hooks', 'pre-commit' );
my $srcdir = path( $Bin, 'src' );
my $githook_perltidy = path( $Bin, 'githook-perltidy' );
my $pod_opts = {};
foreach my $line ( $srcdir->child('podtidy-opts')->lines ) {
chomp $line;
$line =~ s/^--//;
my ( $opt, $arg ) = split / /, $line;
$pod_opts->{$opt} = $arg;
}
sub copy_src {
my $file = shift || die 'copy_src($FILE, $dest)';
my $dest = shift || die 'copy_src($file, $DEST)';
copy( $srcdir->child($file), $dest ) or die "copy: $!";
return if $dest =~ m/^\./;
my $errormsg;
if ( -e '.perltidyrc' ) {
if ( -e '.podtidy-opts' ) {
copy( $dest, $dest . '.perlpodtidy' ) or die "copy: $!";
Perl::Tidy::perltidy(
argv => [ qw{-nst -b -bext=/}, "$dest.perlpodtidy" ],
errorfile => \$errormsg,
perltidyrc => $srcdir->child('perltidyrc')->stringify,
);
Pod::Tidy::tidy_files(
files => [ $dest . '.perlpodtidy' ],
recursive => 0,
verbose => 0,
inplace => 1,
nobackup => 1,
columns => 72,
%$pod_opts,
);
}
else {
copy( $dest, $dest . '.perltidy' ) or die "copy: $!";
Perl::Tidy::perltidy(
argv => [ qw{-nst -b -bext=/}, "$dest.perltidy" ],
errorfile => \$errormsg,
perltidyrc => $srcdir->child('perltidyrc')->stringify,
);
}
}
( run in 1.040 second using v1.01-cache-2.11-cpan-54e63673c56 )