Prevent spurious unclean git repo state on ddl regeneration
[dbsrgits/DBIx-Class.git] / maint / Makefile.PL.inc / 56_autogen_testddl.pl
1 require File::Spec;
2 my $ddl_fn = File::Spec->catfile(qw(t lib sqlite.sql));
3
4 # If the author doesn't have the prereqs, we will end up obliterating
5 # the ddl file, and all tests will fail, therefore don't do anything
6 # on error
7 # The EUMM build-stage generation will run unconditionally and
8 # errors will not be trapped
9 require DBIx::Class::Optional::Dependencies;
10 if ( DBIx::Class::Optional::Dependencies->req_ok_for ('deploy') ) {
11   print "Regenerating t/lib/sqlite.sql\n";
12   if (my $out = ` "$^X" -Ilib maint/gen_schema `) {
13     open (my $fh, '>:unix', $ddl_fn) or die "Unable to open $ddl_fn: $!";
14     print $fh $out;
15     close $fh;
16
17     # if we don't do it some git tools (e.g. gitk) get confused that the
18     # ddl file is modified, when it clearly isn't
19     system('git status --porcelain >' . File::Spec->devnull);
20   }
21 }
22
23 postamble <<"EOP";
24
25 clonedir_generate_files : dbic_clonedir_regen_test_ddl
26
27 dbic_clonedir_regen_test_ddl :
28 \t\$(ABSPERLRUN) -Ilib -- maint/gen_schema > @{[ $mm_proto->quote_literal($ddl_fn) ]}
29 @{[ $crlf_fixup->($ddl_fn) ]}
30 EOP
31
32 # keep the Makefile.PL eval happy
33 1;