build => [ qw<build test> ],
run => [ qw<runtime> ],
);
+my %meta_phase_relationships = (
+ configure => [ qw<requires> ],
+ build => [ qw<requires> ],
+ test => [ qw<requires> ],
+ runtime => [ qw<requires recommends suggests> ],
+);
+
my %prereqs = (
configure => {
'ExtUtils::MakeMaker' => '0',
for my $meta_phase (@{$eumm_phases{$eumm_phase}}) {
- for my $type (qw<requires recommends>) {
+ for my $type (@{$meta_phase_relationships{$meta_phase}}) {
my $phase_prereqs = $meta->{prereqs}{$meta_phase}{$type};
next unless $phase_prereqs;
}
close $old_fh;
}
-my ($old_task_revision) = $old_task_version =~ /([0-9]+)$/;
-my $new_task_version = version->parse($target_version)->normal;
-my $new_task_revision = $old_task_revision;
-if (!$opts{n}
- and version->parse($new_task_version) <= version->parse($old_task_version)) {
- ++$new_task_revision;
-}
-if (($target_version =~ tr/.//) < 2) {
- my @components = split /\./, $new_task_version;
- $components[2] = $new_task_revision;
- $new_task_version = join '.', @components;
+my $new_task_version;
+
+if ($opts{n}) {
+ $new_task_version = $old_task_version;
} else {
- $new_task_version .= ".$new_task_revision";
+ my ($old_target_version, $old_task_revision)
+ = $old_task_version =~ /(.*)\.([0-9]+)$/;
+ my $new_task_revision;
+ if (version->parse($target_version) > version->parse($old_target_version)) {
+ $new_task_revision = 0;
+ } else {
+ $new_task_revision = $old_task_revision + 1;
+ }
+ $new_task_version = version->parse($target_version)->normal;
+ if (($target_version =~ tr/.//) < 2) {
+ my @components = split /\./, $new_task_version;
+ $components[2] = $new_task_revision;
+ $new_task_version = join '.', @components;
+ } else {
+ $new_task_version .= ".$new_task_revision";
+ }
}
(my $bug_queue = $task_pkg) =~ s/::/-/g;
while (@deplist) {
my ($module, $version) = splice @deplist, 0, 2;
my $X = $module eq 'perl' ? 'C' : 'L';
- $pod .= "=item $X<$module>";
+ $pod .= "=item *\n\n$X<$module>";
$pod .= " $version" if $version;
$pod .= "\n\n";
if (my $desc = $prereq_desc{$module}) {
return '{ }' unless @deplist;
my $len = List::Util::max(
- map length, @deplist[grep not($_ % 2), 0 .. $#deplist ]
+ map length, @deplist[grep not($_ % 2), 0 .. $#deplist]
);
my $perl = "{\n";
use strict;
use warnings;
-=head1 NAME
+\=head1 NAME
__TASK_PKG__ - Install __TARGET_PKG__ and its recommended dependencies.
-=head1 VERSION
+\=head1 VERSION
Version __TASK_VERSION__
-=cut
+\=cut
our $VERSION = '__TASK_VERSION__';
-=head1 SYNOPSIS
+\=head1 SYNOPSIS
$ cpan __TASK_PKG__
$ cpanp -i __TASK_PKG__
$ cpanm __TASK_PKG__
-=head1 DESCRIPTION
+\=head1 DESCRIPTION
This task module lets you easily install L<__TARGET_PKG__> __TARGET_VERSION__ and all its recommended dependencies.
-=head1 DEPENDENCIES
+\=head1 DEPENDENCIES
-=head2 Configure-time dependencies
+\=head2 Configure-time dependencies
__CONFIGURE_PREREQS_POD__
-=head2 Build-time and test-time dependencies
+\=head2 Build-time and test-time dependencies
__BUILD_PREREQS_POD__
-=head2 Run-time dependencies
+\=head2 Run-time dependencies
__RUN_PREREQS_POD__
-=head1 AUTHOR
+\=head1 CAVEATS
+
+Note that run-time dependencies that are only recommended by __TARGET_PKG__ may not yet be installed at the time __TARGET_PKG__ is tested, as there is no explicit dependency link between them and in that case most CPAN clients default to install prerequisites in alphabetic order.
+However, they will be installed when __TASK_PKG__ is, thus will be available when you actually use __TARGET_PKG__.
+
+\=head1 AUTHOR
Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
You can contact me by mail or on C<irc.perl.org> (vincent).
-=head1 BUGS
+\=head1 BUGS
Please report any bugs or feature requests to C<__BUG_EMAIL__>, or through the web interface at L<__BUG_QUEUE__>.
I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
-=head1 SUPPORT
+\=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc __TASK_PKG__
-=head1 COPYRIGHT & LICENSE
+\=head1 COPYRIGHT & LICENSE
Copyright __YEARS__ Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
-=cut
+\=cut
1; # End of __TASK_PKG__
TEMPLATE
VERSION_FROM => $file,
ABSTRACT_FROM => $file,
PL_FILES => {},
+ BUILD_REQUIRES => $BUILD_PREREQS,
PREREQ_PM => $RUN_PREREQS,
MIN_PERL_VERSION => '__PERL_PREREQ__',
META_MERGE => \%META,
TEMPLATE
);
+$templates{$task_file} =~ s/^\\=/=/mg;
+
my $valid_keys = join '|', keys %vars;
$valid_keys = qr/$valid_keys/;