cf7f04b8c81cbb1a21f4504bb9d64a6ffc444270
[dbsrgits/SQL-Translator.git] / Makefile.PL
1 use inc::Module::Install 0.89;
2 use strict;
3 use warnings;
4
5 my $deps = {
6   requires => {
7     'Class::Base'              => 0,
8     'Class::Data::Inheritable' => 0.02,
9     'Class::MakeMethods'       => 0,
10     'Digest::SHA1'             => 2.00,
11     'Carp::Clan'               => 0,
12     'IO::Dir'                  => 0,
13     'IO::Scalar'               => 2.110,
14     'Parse::RecDescent'        => 1.096000,   # PBP ftw
15     'Pod::Usage'               => 0,
16     'Class::Accessor::Fast'    => 0,
17     'DBI'                      => 0,
18     'File::ShareDir'           => 1.0,
19     'File::Spec'               => 0,
20     'XML::Writer'              => 0.500,
21     'XML::LibXML'              => 1.69,
22     'YAML'                     => 0.66,
23   },
24   recommends => {
25     'Template'                 => 2.10,
26     'GD'                       => 0,
27     'GraphViz'                 => 0,
28     'Graph::Directed'          => 0,
29     'Spreadsheet::ParseExcel'  => 0.41,
30     'Text::ParseWords'         => 0,
31     'Text::RecordParser'       => 0.02,
32   },
33   test_requires => {
34     'File::Basename'           => 0,
35     'Test::More'               => 0.6,
36     'Test::Differences'        => 0,
37     'Test::Exception'          => 0,
38   },
39 };
40
41 perl_version '5.005';
42
43 name        'SQL-Translator';
44 author      'Ken Youens-Clark <kclark@cpan.org>';
45 abstract    'SQL DDL transformations and more';
46 license     'gpl';
47 repository  'https://sqlfairy.svn.sourceforge.net/svnroot/sqlfairy';
48 bugtracker  'http://rt.cpan.org/NoAuth/Bugs.html?Dist=SQL-Translator';
49
50 resources Ratings => 'http://cpanratings.perl.org/d/SQL-Translator';
51
52 all_from    'lib/SQL/Translator.pm';
53
54 for my $type (qw/requires recommends test_requires/) {
55   no strict qw/refs/;
56   my $f = \&$type;
57   for my $mod (keys %{$deps->{$type} || {} }) {
58     $f->($mod, $deps->{$type}{$mod});
59   }
60 }
61
62 tests_recursive ();
63
64 install_script (qw|
65   script/sqlt-diagram
66   script/sqlt-diff
67   script/sqlt-diff-old
68   script/sqlt-dumper
69   script/sqlt-graph
70   script/sqlt
71 |);
72
73 install_share();
74
75 auto_provides();
76
77 auto_install();
78
79 if ($Module::Install::AUTHOR) {
80   _recompile_grammars();
81   _recreate_rt_source();
82 }
83
84 WriteAll();
85
86
87 sub _recompile_grammars {
88   # placeholder, will be used to recompile P::RD parsers before shipping
89   # will also allow to lose dependency on P::RD
90 }
91
92 sub _recreate_rt_source {
93   my $base_xml = "t/data/roundtrip.xml";
94   my $autogen_yaml = "t/data/roundtrip_autogen.yaml";
95
96   print "Updating $autogen_yaml\n";
97
98   unlink $autogen_yaml;
99
100   eval {
101
102     use lib 'lib';
103
104     require SQL::Translator;
105     require SQL::Translator::Parser::XML;
106
107     open (my $fh, '>', $autogen_yaml) or die "$autogen_yaml: $!\n";
108
109     my $tr = SQL::Translator->new;
110     my $yaml = $tr->translate (
111       parser => 'XML',
112       file => $base_xml,
113       producer => 'YAML',
114     ) or  die sprintf ("Unable to translate %s to YAML: %s\n",
115               $base_xml,
116               $tr->error || 'error unknown'
117           );
118
119     print $fh $yaml;
120     close $fh;
121   };
122
123   if ($@) {
124     print <<EOE;
125
126 =========================================================================
127 ===============              FATAL ERROR                =================
128 =========================================================================
129
130 Unable to update the roundtrip schema (attempt triggered by AUTHOR mode).
131 Aborting Makefile generation.
132
133 $@
134
135 EOE
136     exit 1;
137   }
138 }