The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.043.
use strict;
use warnings;

use 5.008001;

use ExtUtils::MakeMaker;

my %WriteMakefileArgs = (
  "ABSTRACT" => "A modern perl interactive shell",
  "AUTHOR" => "Matt S Trout - mst (at) shadowcatsystems.co.uk (L<http://www.shadowcatsystems.co.uk/>)",
  "CONFIGURE_REQUIRES" => {
    "CPAN::Meta::Requirements" => "2.120620",
    "ExtUtils::MakeMaker" => 0,
    "Module::Metadata" => 0
  },
  "DISTNAME" => "Devel-REPL",
  "EXE_FILES" => [
    "script/re.pl"
  ],
  "LICENSE" => "perl",
  "MIN_PERL_VERSION" => "5.008001",
  "NAME" => "Devel::REPL",
  "PREREQ_PM" => {
    "B::Concise" => "0.62",
    "Devel::Peek" => 0,
    "File::HomeDir" => 0,
    "File::Spec" => 0,
    "JSON::PP" => "2.27300",
    "Module::Runtime" => 0,
    "Moose" => "0.93",
    "Moose::Meta::Role" => 0,
    "Moose::Role" => 0,
    "MooseX::Getopt" => "0.18",
    "MooseX::Object::Pluggable" => "0.0009",
    "Scalar::Util" => 0,
    "Task::Weaken" => 0,
    "Term::ANSIColor" => 0,
    "Term::ReadLine" => 0,
    "Time::HiRes" => 0,
    "namespace::autoclean" => 0,
    "strict" => 0,
    "warnings" => 0
  },
  "TEST_REQUIRES" => {
    "ExtUtils::MakeMaker" => 0,
    "File::Spec" => 0,
    "Test::Fatal" => 0,
    "Test::More" => "0.88",
    "if" => 0
  },
  "VERSION" => "1.003028",
  "test" => {
    "TESTS" => "t/*.t"
  }
);


my %FallbackPrereqs = (
  "B::Concise" => "0.62",
  "Devel::Peek" => 0,
  "ExtUtils::MakeMaker" => 0,
  "File::HomeDir" => 0,
  "File::Spec" => 0,
  "JSON::PP" => "2.27300",
  "Module::Runtime" => 0,
  "Moose" => "0.93",
  "Moose::Meta::Role" => 0,
  "Moose::Role" => 0,
  "MooseX::Getopt" => "0.18",
  "MooseX::Object::Pluggable" => "0.0009",
  "Scalar::Util" => 0,
  "Task::Weaken" => 0,
  "Term::ANSIColor" => 0,
  "Term::ReadLine" => 0,
  "Test::Fatal" => 0,
  "Test::More" => "0.88",
  "Time::HiRes" => 0,
  "if" => 0,
  "namespace::autoclean" => 0,
  "strict" => 0,
  "warnings" => 0
);

# inserted by Dist::Zilla::Plugin::DynamicPrereqs 0.019
requires('PPI')
  if has_module('PPI')
    || prompt('install Completion plugin - extensible tab completion? [Y/n]', 'Y') =~ /^y/i;
requires('Data::Dump::Streamer', '2.39')
  if has_module('Data::Dump::Streamer', '2.39')
    || prompt('install DDS plugin - better format results with Data::Dump::Streamer? [Y/n]', 'Y') =~ /^y/i;
requires('Data::Dumper::Concise')
  if has_module('Data::Dumper::Concise')
    || prompt('install DDC plugin - even better format results with Data::Dumper::Concise? [Y/n]', 'Y') =~ /^y/i;
requires('File::Next')
  if has_module('File::Next')
    || prompt('install INC completion driver - tab complete module names in use and require? [Y/n]', 'Y') =~ /^y/i;
requires('Sys::SigAction')
  if has_module('Sys::SigAction')
    || prompt('install Interrupt plugin - traps SIGINT to kill long-running lines? [y/N]', 'N') =~ /^y/i;
requires('B::Keywords')
  if has_module('B::Keywords')
    || prompt('install Keywords completion driver - tab complete Perl keywords and operators? [Y/n]', 'Y') =~ /^y/i;
requires('Lexical::Persistence')
  if has_module('Lexical::Persistence')
    || prompt('install LexEnv plugin - variables declared with "my" persist between statements? [Y/n]', 'Y') =~ /^y/i;
requires('PPI')
  if has_module('PPI')
    || prompt('install MultiLine::PPI plugin - continue reading lines until all blocks are closed? [Y/n]', 'Y') =~ /^y/i;
requires('App::Nopaste')
  if has_module('App::Nopaste')
    || prompt('install Nopaste plugin - upload a session\'s input and output to a Pastebin? [y/N]', 'N') =~ /^y/i;
requires('PPI')
  if has_module('PPI')
    || prompt('install PPI plugin - PPI dumping of Perl code? [Y/n]', 'Y') =~ /^y/i;
requires('Module::Refresh')
  if has_module('Module::Refresh')
    || prompt('install Refresh plugin - automatically reload libraries with Module::Refresh? [y/N]', 'N') =~ /^y/i;


unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
  delete $WriteMakefileArgs{TEST_REQUIRES};
  delete $WriteMakefileArgs{BUILD_REQUIRES};
  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}

delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };

WriteMakefile(%WriteMakefileArgs);

# inserted by Dist::Zilla::Plugin::DynamicPrereqs 0.019
sub _add_prereq {
  my ($mm_key, $module, $version_or_range) = @_;
  warn "$module already exists in $mm_key -- need to do a sane metamerge!"
    if exists $WriteMakefileArgs{$mm_key}{$module}
      and $WriteMakefileArgs{$mm_key}{$module} ne ($version_or_range || 0);
  warn "$module already exists in FallbackPrereqs -- need to do a sane metamerge!"
    if exists $FallbackPrereqs{$module} and $FallbackPrereqs{$module} ne ($version_or_range || 0);
  $WriteMakefileArgs{$mm_key}{$module} = $FallbackPrereqs{$module} = $version_or_range || 0;
  return;
}

sub has_module {
  my ($module, $version_or_range) = @_;
  require Module::Metadata;
  my $mmd = Module::Metadata->new_from_module($module);
  return undef if not $mmd;
  return $mmd->version($module) if not defined $version_or_range;

  require CPAN::Meta::Requirements;
  my $req = CPAN::Meta::Requirements->new;
  $req->add_string_requirement($module => $version_or_range);
  return 1 if $req->accepts_module($module => $mmd->version($module));
  return 0;
}

sub requires { goto &runtime_requires }

sub runtime_requires {
  my ($module, $version_or_range) = @_;
  _add_prereq(PREREQ_PM => $module, $version_or_range);
}