The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use 5.008001;

use ExtUtils::MakeMaker;

my %RUN_DEPS = (
    "Getopt::Long"              => "2.43",
    "Getopt::Long::Descriptive" => "0.099",
    "MRO::Compat"               => 0,
    "Module::Runtime"           => 0,
    "Moo"                       => "1.003",
    "strictures"                => 2,
    "MooX::Locale::Passthrough" => 0,
    "Path::Class"               => "0.32",
    "Pod::Usage"                => 0,
    "Text::LineFold"            => 0,
);

my %CONFIGURE_DEPS = ( 'ExtUtils::MakeMaker' => 0, );

my %BUILD_DEPS = ();

my %TEST_DEPS = (
    "Test::More" => 0.90,
    "Test::Trap" => 0,
);

WriteMakefile1(
    MIN_PERL_VERSION => "5.008001",
    META_ADD         => {
        "meta-spec"    => { version => 2 },
        dynamic_config => 0,
        resources      => {
            homepage   => "https://metacpan.org/celogeek/MooX-Options",
            repository => {
                url  => "https://github.com/celogeek/MooX-Options.git",
                web  => "https://github.com/celogeek/MooX-Options",
                type => "git",
            },
            bugtracker => {
                web =>
                    "http://rt.cpan.org/Public/Dist/Display.html?Name=MooX-Options",
                mailto => 'bug-MooX-Options@rt.cpan.org',
            },
            license => "http://dev.perl.org/licenses/",
        },
        prereqs => {
            develop => {
                requires => {
                    "Test::CPAN::Changes"                 => 0,
                    "Test::CheckManifest"                 => 0,
                    "Module::CPANTS::Analyse"             => "0.96",
                    "Test::Kwalitee"                      => 0,
                    "Test::Perl::Critic"                  => 0,
                    "Test::PerlTidy"                      => 0,
                    "Test::Pod"                           => 0,
                    "Test::Pod::Coverage"                 => 0,
                    "Test::Pod::Spelling::CommonMistakes" => 0,
                    "Test::Spelling"                      => 0,
                },
            },
            configure => { requires => {%CONFIGURE_DEPS}, },
            build     => { requires => {%BUILD_DEPS} },
            test      => {
                requires   => {%TEST_DEPS},
                recommends => {
                    "Data::Record"   => 0,
                    "JSON::MaybeXS"  => 0,
                    "Regexp::Common" => 0,
                },
                suggests => {
                    "Mo"                           => "0.36",
                    "MooX::Cmd"                    => "0.012",
                    "MooX::ConfigFromFile"         => 0,
                    "Moose"                        => 0,
                    "MooX::Locale::TextDomain::OO" => 0,
                }
            },
            runtime => {
                requires   => { %RUN_DEPS, perl => "5.8.1", },
                recommends => {
                    "Data::Record"   => 0,
                    "JSON::MaybeXS"  => 0,
                    "Regexp::Common" => 0,
                },
            },
        },
    },
    NAME          => "MooX::Options",
    VERSION_FROM  => "lib/MooX/Options.pm",
    ABSTRACT_FROM => "lib/MooX/Options.pm",
    LICENSE       => "perl",
    AUTHOR =>
        [ q{celogeek <me@celogeek.com>}, q{Jens Rehsack <rehsack@cpan.org>} ],
    PREREQ_PM          => \%RUN_DEPS,
    CONFIGURE_REQUIRES => \%CONFIGURE_DEPS,
    BUILD_REQUIRES     => \%BUILD_DEPS,
    TEST_REQUIRES      => \%TEST_DEPS,
    test               => { TESTS => "t/*.t xt/*.t" },
);

sub WriteMakefile1
{ # originally written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
    my %params       = @_;
    my $eumm_version = $ExtUtils::MakeMaker::VERSION;
    $eumm_version = eval $eumm_version;
    die "EXTRA_META is deprecated" if ( exists( $params{EXTRA_META} ) );
    die "License not specified"    if ( !exists( $params{LICENSE} ) );
    $params{TEST_REQUIRES}
        and $eumm_version < 6.6303
        and $params{BUILD_REQUIRES} = {
        %{ $params{BUILD_REQUIRES} || {} },
        %{ delete $params{TEST_REQUIRES} }
        };

    #EUMM 6.5502 has problems with BUILD_REQUIRES
    $params{BUILD_REQUIRES}
        and $eumm_version < 6.5503
        and $params{PREREQ_PM}
        = { %{ $params{PREREQ_PM} || {} },
        %{ delete $params{BUILD_REQUIRES} } };
    ref $params{AUTHOR}
        and "ARRAY" eq ref $params{AUTHOR}
        and $eumm_version < 6.5702
        and $params{AUTHOR} = join( ", ", @{ $params{AUTHOR} } );
    delete $params{CONFIGURE_REQUIRES}    if ( $eumm_version < 6.52 );
    delete $params{MIN_PERL_VERSION}      if ( $eumm_version < 6.48 );
    delete $params{META_MERGE}            if ( $eumm_version < 6.46 );
    delete $params{META_ADD}{prereqs}     if ( $eumm_version < 6.58 );
    delete $params{META_ADD}{"meta-spec"} if ( $eumm_version < 6.58 );
    delete $params{META_ADD}              if ( $eumm_version < 6.46 );
    delete $params{LICENSE}               if ( $eumm_version < 6.31 );
    delete $params{AUTHOR}                if ( $] < 5.005 );
    delete $params{ABSTRACT_FROM}         if ( $] < 5.005 );
    delete $params{BINARY_LOCATION}       if ( $] < 5.005 );

    # more or less taken from Moose' Makefile.PL
    if ( $params{CONFLICTS} ) {
        my $ok = CheckConflicts(%params);
        exit(0) if ( $params{PREREQ_FATAL} and not $ok );
        my $cpan_smoker
            = grep { $_ =~ m/(?:CR_SMOKER|CPAN_REPORTER|AUTOMATED_TESTING)/ }
            keys %ENV;
        unless ( $cpan_smoker || $ENV{PERL_MM_USE_DEFAULT} ) {
            sleep 4 unless ($ok);
        }
        delete $params{CONFLICTS};
    }

    WriteMakefile(%params);
}