#!/usr/bin/env perl
-=head1 NAME
+# -------------------------------------------------------------------
+# Copyright (C) 2002-2009 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-graph - Automatically create a graph from a database schema
-l|--layout Layout schema for GraphViz
("dot," "neato," "twopi"; default "dot")
- -n|--node-shape Shape of the nodes ("record," "plaintext,"
- "ellipse," "circle," "egg," "triangle," "box,"
- "diamond," "trapezium," "parallelogram," "house,"
+ -n|--node-shape Shape of the nodes ("record," "plaintext,"
+ "ellipse," "circle," "egg," "triangle," "box,"
+ "diamond," "trapezium," "parallelogram," "house,"
"hexagon," "octagon," default "record")
-o|--output Output file name (default STDOUT)
-t|--output-type Output file type ("canon", "text," "ps," "hpgl,"
--no-fields Don't show field names
--height Image height (in inches, default "11",
set to "0" to undefine)
- --width Image width (in inches, default "8.5",
+ --width Image width (in inches, default "8.5",
set to "0" to undefine)
--fontsize custom font size for node and edge labels
- --fontname name of custom font (or full path to font file) for
+ --fontname name of custom font (or full path to font file) for
node, edge, and graph labels
--nodeattr attribute name and value (in key=val syntax) for
- nodes; this option may be repeated to specify
+ nodes; this option may be repeated to specify
multiple node attributes
--edgeattr same as --nodeattr, but for edge attributes
--graphattr same as --nodeattr, but for graph attributes
--show-sizes Show column sizes for VARCHAR and CHAR fields
--show-constraints Show list of constraints for each field
-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
+ --trace Print parser trace info
=head1 DESCRIPTION
directed showing the direction of the relationship. If the foreign
keys are intuited via natural joins, the graph will be undirected.
-Clustering of tables allows you to group and box tables according to
-function or domain or whatever criteria you choose. The syntax for
+Clustering of tables allows you to group and box tables according to
+function or domain or whatever criteria you choose. The syntax for
clustering tables is:
cluster1=table1,table2;cluster2=table3,table4
#
# Get arguments.
#
-my (
- $layout, $node_shape, $out_file, $output_type, $db_driver, $add_color,
+my (
+ $layout, $node_shape, $out_file, $output_type, $db_driver, $add_color,
$natural_join, $join_pk_only, $skip_fields, $show_datatypes,
$show_sizes, $show_constraints, $debug, $help, $height, $width,
$no_fields, $fontsize, $fontname, $skip_tables, $skip_tables_like,
- $cluster
+ $cluster, $trace
);
# multi-valued options:
'show-sizes' => \$show_sizes,
'show-constraints' => \$show_constraints,
'debug' => \$debug,
+ 'trace' => \$trace,
'h|help' => \$help,
) or die pod2usage;
my @files = @ARGV; # the create script(s) for the original db
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 => 'GraphViz',
debug => $debug || 0,
+ trace => $trace || 0,
producer_args => {
out_file => $out_file,
layout => $layout,