package App::Prove::Plugin::andoc; use 5.014; use warnings; our $VERSION = '0.9.2'; use Pandoc; use File::Temp qw(tempdir); use Cwd qw(realpath); sub load { my ( $class, $p ) = @_; my ($bin) = @{ $p->{args} }; die "Usage: prove -Pandoc=EXECUTABLE ...\n" unless defined $bin; die "Pandoc executable not found: $bin\n" unless -x $bin; # dies if executable is not pandoc my $pandoc = Pandoc->new($bin); my $tmp = tempdir( CLEANUP => 1 ); symlink( realpath( $pandoc->bin ), "$tmp/pandoc" ) or die "symlinking pandoc failed!\n"; $ENV{PATH} = "$tmp:" . $ENV{PATH}; if ( $p->{app_prove}->{verbose} ) { print "# pandoc executable set to $bin\n"; } } 1; __END__ =head1 NAME App::Prove::Plugin::andoc - Select pandoc executable for tests =head1 SYNOPSIS # specify executable prove -Pandoc=bin/pandoc-2.1.2 ... # specify executable in ~/.pandoc/bin by version prove -Pandoc=2.1.2 ... =head1 DESCRIPTION This plugin to L modifies PATH to use a selected pandoc executable before running tests. See L to download pandoc executables. =head1 SEE ALSO Pandoc executable with package L can be specified by constructor or with environment variable C. =cut