#!/usr/bin/env perl
-=head1 NAME
+# -------------------------------------------------------------------
+# Copyright (C) 2002-2011 SQLFairy Authors
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA
+# -------------------------------------------------------------------
+
+=head1 NAME
sqlt-diagram - Automatically create a diagram from a database schema
default "medium")
--gutter Gutter size between tables
--color Add colors
- --show-fk-only Only show fields that act as primary
+ --show-fk-only Only show fields that act as primary
or foreign keys
--natural-join Perform natural joins
--natural-join-pk Perform natural joins from primary keys only
-s|--skip Fields to skip in natural joins
- --skip-tables Comma-separated list of table names to exclude
+ --skip-tables Comma-separated list of table names to exclude
--skip-tables-like Comma-separated list of regexen to exclude tables
--debug Print debugging information
field called "name" to be considered a foreign key, so you could
include it in the "skip" option, and all fields called "name" will be
excluded from natural joins. A more efficient method, however, might
-be to simply deduce the foriegn keys from primary keys to other fields
+be to simply deduce the foreign keys from primary keys to other fields
named the same in other tables. Use the "natural-join-pk" option
to achieve this.
#
# Get arguments.
#
-my (
- $out_file, $image_type, $db_driver, $title, $num_columns,
+my (
+ $out_file, $output_type, $db_driver, $title, $num_columns,
$no_lines, $font_size, $add_color, $debug, $show_fk_only,
- $gutter, $natural_join, $join_pk_only, $skip_fields,
+ $gutter, $natural_join, $join_pk_only, $skip_fields,
$skip_tables, $skip_tables_like, $help
);
GetOptions(
'd|db|f|from=s' => \$db_driver,
'o|output:s' => \$out_file,
- 'i|image:s' => \$image_type,
+ 'i|image:s' => \$output_type,
't|title:s' => \$title,
'c|columns:i' => \$num_columns,
'n|no-lines' => \$no_lines,
pod2usage( -message => "No db driver specified" ) unless $db_driver;
pod2usage( -message => 'No input file' ) unless @files;
-my $translator = SQL::Translator->new(
+my $translator = SQL::Translator->new(
from => $db_driver,
to => 'Diagram',
debug => $debug || 0,
producer_args => {
out_file => $out_file,
- image_type => $image_type,
+ output_type => $output_type,
gutter => $gutter || 0,
title => $title,
num_columns => $num_columns,
},
) or die SQL::Translator->error;
+binmode STDOUT unless $out_file;
+
for my $file (@files) {
my $output = $translator->translate( $file ) or die
"Error: " . $translator->error;