X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FGitalist.git;a=blobdiff_plain;f=Makefile.PL;h=c0555f5c0d848e7ce496829283c81a7e2e65e498;hp=446cace27937c7bf98b9b6070690724a8e72e5bd;hb=460b079a490cc638ecdd666c63d8edc09b7a8bcc;hpb=839da3d7b73ba6248d42f0298753220d2b09b996 diff --git a/Makefile.PL b/Makefile.PL index 446cace..c0555f5 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,65 +1,171 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { + my $env = "$FindBin::Bin/script/env"; + if (-r $env) { + do $env or die $@; + } +} + use strict; use warnings; -use inc::Module::Install; -use Module::AutoInstall; -use Module::Install::AuthorRequires; -use Module::Install::AuthorTests; -use Module::Install::ReadmeFromPod; +use inc::Module::Install 0.91; name 'Gitalist'; all_from 'lib/Gitalist.pm'; -readme_from 'lib/Gitalist.pm'; -requires 'Catalyst::Runtime' => '5.80003'; +author 'Dan Brook '; + +license 'gpl2'; + +if ($ENV{GITALIST_RELEASE_TESTING}) { + # Nasty hack as Module::Install kindly re-loads all of these :/ + local $SIG{__WARN__} = sub { return if $_[0] =~ /redefined/; warn shift }; + require Module::Install::AuthorRequires; + require Module::Install::AuthorTests; + + author_tests('t/author'); + author_requires('Test::NoTabs'); + author_requires('Test::Pod' => '1.14'); + author_requires('Test::Pod::Coverage' => '1.04'); + + require File::Find; + require FindBin; + require ExtUtils::MM_Unix; + # Fill in provides info so that indexing works right (in the face of MX::Declare) + # by just smashing filenames to package names and not trying to be smart.. + File::Find::find(sub { + return unless /^\w.*?\.pm$/; + my $fn = $File::Find::name; + my $ver = ExtUtils::MM_Unix->parse_version($fn); + + $fn =~ s/.+?lib/lib/; + my $pn = $fn; + $pn =~ s|^lib/||; + $pn =~ s|/|::|g; + $pn =~ s/\.pm$//; + + provides( + $pn => { + file => $fn, + # Ewww + $ver ne 'undef' ? (version => $ver) : (), + }, + ); + }, $FindBin::Bin . "/lib"); +} + +requires 'Catalyst::Runtime' => '5.90013'; requires 'Catalyst::Plugin::ConfigLoader'; requires 'Catalyst::Plugin::StackTrace'; requires 'Catalyst::Plugin::Static::Simple'; +requires 'Catalyst::Plugin::Unicode::Encoding'; +requires 'Catalyst::Plugin::SubRequest' => '0.15'; requires 'Catalyst::Action::RenderView'; - -requires 'Template'; -requires 'Template::Provider::Encoding'; -requires 'Catalyst::View::TT'; +requires 'Catalyst::Action::REST'; +requires 'Catalyst::Component::InstancePerContext'; +requires 'Catalyst::View::Component::SubInclude' => '0.07'; +requires 'Catalyst::View::TT' => '0.34'; +requires 'Try::Tiny'; +requires 'Template' => '2.22'; requires 'Template::Plugin::Cycle'; +requires 'Template::Plugin::UTF8Decode'; requires 'Config::General'; requires 'Moose'; requires 'Moose::Autobox'; -requires 'MooseX::Declare'; +requires 'MooseX::Declare' => '0.32'; +requires 'MooseX::Storage'; +requires 'MooseX::Types'; requires 'MooseX::Types::Common'; requires 'MooseX::Types::Path::Class'; -requires 'MooseX::Types'; +requires 'MooseX::Types::DateTime' => '0.05'; +requires 'MooseX::Types::LoadableClass'; requires 'namespace::autoclean'; -requires 'Git::PurePerl'; # Note - need the git version in broquaint's fork +requires 'Git::PurePerl' => '0.47'; requires 'aliased'; requires 'CGI'; requires 'DateTime'; -requires 'DateTime::Format::Mail'; requires 'File::Copy::Recursive'; -requires 'File::Stat::ModeString'; +requires 'File::Type'; +requires 'File::Type::WebImages'; requires 'File::Which'; requires 'HTML::Entities'; -requires 'IO::Capture::Stdout'; requires 'IPC::Run'; +requires 'JSON'; +requires 'JSON::XS'; requires 'List::MoreUtils'; requires 'Path::Class' => '0.17'; -requires 'Sub::Exporter'; requires 'Syntax::Highlight::Engine::Kate'; +requires 'Sys::Hostname'; + +requires_external_bin 'git'; -author_requires 'Test::NoTabs'; -author_requires 'Test::Pod' => '1.14'; -author_requires 'Test::Pod::Coverage' => '1.04'; +test_requires 'Test::Deep' => '0.108'; +test_requires 'Test::More' => '0.88'; +test_requires 'Test::utf8' => '0.02'; +test_requires 'Test::Exception' => '0.31'; -test_requires 'Test::More' => '0.88'; +resources bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Gitalist'; +resources repository => 'git://git.shadowcat.co.uk/catagits/Gitalist.git'; catalyst; -author_tests 't/author'; -install_script glob('script/*.pl'); +if ($Module::Install::AUTHOR) { + system("pod2text lib/Gitalist.pm > README") + and die $!; + include 'File::Copy::Recursive'; +} + +if ($ENV{GITALIST_RELEASE_TESTING}) { + author_tests('t/author'); + author_requires('Test::NoTabs'); + author_requires('Test::Pod' => '1.14'); + author_requires('Test::Pod::Coverage' => '1.04'); + author_requires('Test::WWW::Mechanize::Catalyst' => '0.51'); + author_requires('HTML::TreeBuilder::XPath'); + author_requires('WWW::Mechanize::TreeBuilder'); +} + +install_script glob('script/*.p{l,sgi}'); auto_install; + +{ # Make sure you REALLY REALLY have to have the env variable set to run + # any of the dist actions. + package # PAUSE HIDE + MY; + + sub dist_core { # MakeMaker is awesome fun to customise. And when I say + my ($self, @args) = @_; # fun I mean OH GOD MY EYES. + my $text = $self->SUPER::dist_core(@args); + my @lines = split /\n/, $text; + unless ($ENV{GITALIST_RELEASE_TESTING}) { + my ($printed, @out_lines); + foreach my $in (@lines) { + if ($in =~ /^\S/) { + undef $printed; + $in =~ s/:.*$/:/g; + push @out_lines, $in; + } + elsif ($in =~ /^\s+$/) { + push @out_lines, $in; + } + elsif (!$printed) { + push @out_lines, "\techo Get stuffed mate - set GITALIST_RELEASE_TESTING if you really want to do this.."; + $printed = 1; + } + else {} + } + @lines = @out_lines; + } + return join "\n", @lines; + } +} + WriteAll; +