8 use Module::Runtime 'use_module';
10 use Path::Class 'file';
12 my $getopt = Getopt::Long::Parser->new(
13 config => [qw/gnu_getopt bundling_override no_ignore_case/]
16 $getopt->getoptions($args, qw/
21 die "You need to specify one diagram output filename via --diagram-out\n"
22 if @{$args->{'diagram-out'}||[]} != 1;
24 die "You need to specify one DBIC schema class via --schema-class\n"
25 if @{$args->{'schema-class'}||[]} != 1;
28 if ($args->{'diagram-out'}[0] eq '-') {
29 $diagram_fh = *STDOUT;
32 my $fn = file($args->{'diagram-out'}[0]);
34 open $diagram_fh, '>', $fn
35 or die "Unable to open $fn: $!\n";
37 binmode $diagram_fh; # avoid win32 \n crapfest
39 my $schema_class = $args->{'schema-class'}[0];
40 use_module( $schema_class );
41 my $schema = $schema_class->connect( DBICTest->_database(quote_char => '"') );
43 my $trans = SQL::Translator->new(
44 parser => 'SQL::Translator::Parser::DBIx::Class',
45 parser_args => { dbic_schema => $schema },
46 producer => 'GraphViz',
48 show_constraints => 1,
51 out_file => $diagram_fh,
57 $trans->translate or die $trans->error;