Add use_moo option
[dbsrgits/DBIx-Class-Schema-Loader.git] / Makefile.PL
1 use warnings;
2 use strict;
3
4 use 5.008001;
5 BEGIN { unshift @INC, '.' unless $INC[-1] eq '.'; }
6 use inc::Module::Install 1.00;
7
8 use Getopt::Long();
9
10 my $getopt = Getopt::Long::Parser->new(
11     config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/]
12 );
13 my $args = {
14     skip_author_deps => undef,
15 };
16 $getopt->getoptions($args, 'skip_author_deps');
17 if (@ARGV) {
18     warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
19 }
20
21 use FindBin;
22 use lib "$FindBin::Bin/lib";
23
24 perl_version '5.008001';
25 name           'DBIx-Class-Schema-Loader';
26 all_from       'lib/DBIx/Class/Schema/Loader.pm';
27
28 # temporary, needs to be thrown out
29 test_requires 'DBIx::Class::IntrospectableM2M' => 0;
30
31 # core, but specific versions not available on older perls
32 test_requires 'File::Temp'      => '0.16';
33 test_requires 'File::Path'      => '2.07';
34
35 test_requires 'DBD::SQLite'     => '1.29';
36 test_requires 'Test::Exception' => '0.31';
37 test_requires 'Test::More'      => '0.94';
38 test_requires 'Test::Warn'      => '0.21';
39 test_requires 'Test::Deep'      => '0.107';
40 test_requires 'Test::Differences' => '0.60';
41
42 requires 'Carp::Clan'                  => 0;
43 requires 'Class::Accessor::Grouped'    => '0.10008';
44 requires 'Class::C3::Componentised'    => '1.0008';
45 requires 'Class::Inspector'            => '1.27';
46 requires 'Class::Unload'               => '0.07';
47 requires 'Data::Dump'                  => '1.06';
48 requires 'DBIx::Class'                 => '0.08127';
49 requires 'Hash::Merge'                 => '0.12';
50 requires 'Lingua::EN::Inflect::Number' => '1.1';
51 requires 'Lingua::EN::Tagger'          => '0.23';
52 requires 'Lingua::EN::Inflect::Phrase' => '0.15';
53 requires 'List::Util'                  => '1.33';
54 requires 'MRO::Compat'                 => '0.09';
55 requires 'namespace::clean'            => '0.23';
56 requires 'Scope::Guard'                => '0.20';
57 requires 'String::ToIdentifier::EN'    => '0.05';
58 requires 'String::CamelCase'           => '0.02';
59 requires 'Sub::Util'                   => '1.40';
60 requires 'Try::Tiny'                   => 0;
61
62 # core, but specific versions not available on older perls
63 requires 'Digest::MD5'                 => '2.36';
64 requires 'Exporter'                    => '5.63';
65
66 print <<"EOF";
67 ******************* DBIx::Class::Schema::Loader WARNING ***********************
68 The default attributes for belongs_to relationships for foreign keys with no
69 rules has been changed for most databases, and is soon changing for the rest,
70 as ON DELETE/UPDATE and DEFERRABLE clauses for foreign keys are now being
71 introspected.
72
73 THIS MAY AFFECT YOUR DDL DIFFS WHEN DEPLOYING
74
75 YOUR GENERATED CODE WILL ALMOST CERTAINLY CHANGE
76
77 Read more about the changes in "relationship_attrs" in:
78
79 perldoc DBIx::Class::Schema::Loader::Base
80
81 https://metacpan.org/module/DBIx::Class::Schema::Loader::Base#relationship_attrs
82
83 See also the "Changes" file for the last few revisions.
84 *******************************************************************************
85 EOF
86
87 if ($Module::Install::AUTHOR && ! $args->{skip_author_deps}) {
88     my @missing_plugins;
89     for my $plugin (qw(ReadmeFromPod AuthorTests)) {
90         eval "require Module::Install::$plugin" and next;
91         push @missing_plugins, "Module::Install::$plugin";
92         chomp(my $err = $@);
93         $missing_plugins[-1] .= " ($err)"
94             unless $err =~ m{^Can't locate Module/Install/$plugin.pm in \@INC};
95     }
96     die "\nYou need to install the following modules to run this Makefile.PL in author mode:\n\n", join("\n", @missing_plugins), "\n\n"
97         if @missing_plugins;
98
99     warn "\n*** AUTHOR MODE: some optional dependencies converted to hard requires.\n\n";
100
101     require DBIx::Class::Schema::Loader::Optional::Dependencies;
102
103     test_requires %{DBIx::Class::Schema::Loader::Optional::Dependencies
104         ->modreq_list_for([
105             grep { !/rdbms/ }
106             keys %{ DBIx::Class::Schema::Loader::Optional::Dependencies
107                 ->req_group_list
108             }
109         ])};
110
111     DBIx::Class::Schema::Loader::Optional::Dependencies->_gen_pod(undef, 'lib');
112
113     author_tests( 'xt' );
114     readme_from( 'lib/DBIx/Class/Schema/Loader.pm' );
115     realclean_files( qw[README MANIFEST lib/DBIx/Class/Schema/Loader/Optional/Dependencies.pod] );
116     postamble <<EOP;
117 create_distdir: author_stop_distdir_creation
118 author_stop_distdir_creation:
119 \t\$(NOECHO) \$(ECHO) Creation of dist with author mode deps not allowed
120 \t\$(NOECHO) \$(ECHO) Please re-run Makefile.PL with --skip_author_deps
121 \t\$(NOECHO) \$(FALSE)
122 EOP
123
124 }
125
126 tests_recursive;
127
128 install_script 'script/dbicdump';
129
130 resources 'IRC'         => 'irc://irc.perl.org/#dbix-class';
131 resources 'license'     => 'http://dev.perl.org/licenses/';
132 resources 'repository'  => 'https://github.com/dbsrgits/dbix-class-schema-loader';
133 resources 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class';
134
135 auto_install;
136 WriteAll;
137
138 # vim:et sts=4 sw=4 tw=0: