App-GitHooks-Plugin-PerlCompile
view release on metacpan or search on metacpan
lib/App/GitHooks/Plugin/PerlCompile.pm view on Meta::CPAN
=head2 get_file_pattern()
Return a pattern to filter the files this plugin should analyze.
my $file_pattern = App::GitHooks::Plugin::PerlCompile->get_file_pattern(
app => $app,
);
=cut
sub get_file_pattern
{
return qr/\.(?:pl|pm|t|cgi)$/x;
}
=head2 get_file_check_description()
Return a description of the check performed on files by the plugin and that
will be displayed to the user, if applicable, along with an indication of the
success or failure of the plugin.
my $description = App::GitHooks::Plugin::PerlCompile->get_file_check_description();
=cut
sub get_file_check_description
{
return 'The file passes perl -c';
}
=head2 run_pre_commit_file()
Code to execute for each file as part of the pre-commit hook.
my $success = App::GitHooks::Plugin::PerlCompile->run_pre_commit_file();
=cut
sub run_pre_commit_file
{
my ( $class, %args ) = @_;
my $file = delete( $args{'file'} );
my $git_action = delete( $args{'git_action'} );
my $app = delete( $args{'app'} );
my $repository = $app->get_repository();
my $config = $app->get_config();
# Ignore deleted files.
return $PLUGIN_RETURN_SKIPPED
if $git_action eq 'D';
# Prepare extra libs specified in .githooksrc.
my $lib_paths = $config->get( 'PerlCompile', 'lib_paths' );
my @lib = map { ( '-I', $_ ) } split( /\s*,\s*/, $lib_paths // '' );
# Execute perl -cw.
my $path = File::Spec->catfile( $repository->work_tree(), $file );
my ( $pid, $stdin, $stdout, $stderr ) = System::Command->spawn( $^X, '-cw', @lib, $path );
# Retrieve the output.
my $output;
{
local $/ = undef;
$output = <$stderr>;
chomp( $output );
}
# Raise an exception if we didn't get "syntax OK".
die "$output\n"
if $output !~ /\Q$file syntax OK\E$/x;
return $PLUGIN_RETURN_PASSED;
}
=head1 BUGS
Please report any bugs or feature requests through the web interface at
L<https://github.com/guillaumeaubert/App-GitHooks-Plugin-PerlCompile/issues/new>.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc App::GitHooks::Plugin::PerlCompile
You can also look for information at:
=over
=item * GitHub's request tracker
L<https://github.com/guillaumeaubert/App-GitHooks-Plugin-PerlCompile/issues>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/app-githooks-plugin-perlcompile>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/app-githooks-plugin-perlcompile>
=item * MetaCPAN
L<https://metacpan.org/release/App-GitHooks-Plugin-PerlCompile>
=back
=head1 AUTHOR
L<Guillaume Aubert|https://metacpan.org/author/AUBERTG>,
C<< <aubertg at cpan.org> >>.
=head1 COPYRIGHT & LICENSE
Copyright 2013-2016 Guillaume Aubert.
This code is free software; you can redistribute it and/or modify it under the
( run in 2.408 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )