Strip evil svn:keywords
[dbsrgits/SQL-Translator.git] / bin / sqlt-graph
index b50b4ad..e3aa3b5 100755 (executable)
@@ -1,9 +1,9 @@
 #!/usr/bin/perl
 
 # -------------------------------------------------------------------
-# $Id: sqlt-graph,v 1.2 2004-02-06 17:45:53 kycl4rk Exp $
+# $Id: sqlt-graph 1440 2009-01-17 16:31:57Z jawnsy $
 # -------------------------------------------------------------------
-# Copyright (C) 2002-4 SQLFairy Authors
+# 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
@@ -47,8 +47,19 @@ sqlt-graph - Automatically create a graph from a database schema
                        set to "0" to undefine)
     --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 
+                       node, edge, and graph labels
+    --nodeattr         attribute name and value (in key=val syntax) for
+                       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
     --natural-join     Perform natural joins
     --natural-join-pk  Perform natural joins from primary keys only
+    --show-datatypes   Show datatype of each field
+    --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
     --debug            Print debugging information
 
@@ -87,31 +98,42 @@ use GraphViz;
 use Pod::Usage;
 use SQL::Translator;
 
-use vars '$VERSION';
-$VERSION = sprintf "%d.%02d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/;
-
 #
 # Get arguments.
 #
 my ( 
     $layout, $node_shape, $out_file, $output_type, $db_driver, $add_color, 
-    $natural_join, $join_pk_only, $skip_fields, $debug, $help, $height, 
-    $width, $no_fields
+    $natural_join, $join_pk_only, $skip_fields, $show_datatypes,
+    $show_sizes, $show_constraints, $debug, $help, $height, $width,
+    $no_fields, $fontsize, $fontname
 );
 
+# multi-valued options:
+my %edgeattrs = ();
+my %nodeattrs = ();
+my %graphattrs = ();
+
 GetOptions(
     'd|db|f|from=s'    => \$db_driver,
     'o|output:s'       => \$out_file,
     'l|layout:s'       => \$layout,
     'n|node-shape:s'   => \$node_shape,
     't|output-type:s'  => \$output_type,
-    'height:i'         => \$height,
-    'width:i'          => \$width,
+    'height:f'         => \$height,
+    'width:f'          => \$width,
+    'fontsize=i'       => \$fontsize,
+    'fontname=s'       => \$fontname,
+    'nodeattr=s'       => \%nodeattrs,
+    'edgeattr=s'       => \%edgeattrs,
+    'graphattr=s'      => \%graphattrs,
     'c|color'          => \$add_color,
     'no-fields'        => \$no_fields,
     'natural-join'     => \$natural_join,
     'natural-join-pk'  => \$join_pk_only,
     's|skip:s'         => \$skip_fields,
+    'show-datatypes'   => \$show_datatypes,
+    'show-sizes'       => \$show_sizes,
+    'show-constraints' => \$show_constraints,
     'debug'            => \$debug,
     'h|help'           => \$help,
 ) or die pod2usage;
@@ -121,22 +143,30 @@ pod2usage(1) if $help;
 pod2usage( -message => "No db driver specified" ) unless $db_driver;
 pod2usage( -message => 'No input file'          ) unless @files;
 
-my $translator          =  SQL::Translator->new( 
-    from                => $db_driver,
-    to                  => 'GraphViz',
-    debug               => $debug || 0,
-    producer_args       => {
-        out_file        => $out_file,
-        layout          => $layout,
-        node_shape      => $node_shape,
-        output_type     => $output_type,
-        add_color       => $add_color,
-        natural_join    => $natural_join,
-        natural_join_pk => $join_pk_only,
-        skip_fields     => $skip_fields,
-        height          => $height || 0,
-        width           => $width  || 0,
-        show_fields     => $no_fields ? 0 : 1,
+my $translator           =  SQL::Translator->new( 
+    from                 => $db_driver,
+    to                   => 'GraphViz',
+    debug                => $debug || 0,
+    producer_args        => {
+        out_file         => $out_file,
+        layout           => $layout,
+        node_shape       => $node_shape,
+        output_type      => $output_type,
+        add_color        => $add_color,
+        natural_join     => $natural_join,
+        natural_join_pk  => $join_pk_only,
+        skip_fields      => $skip_fields,
+        show_datatypes   => $show_datatypes,
+        show_sizes       => $show_sizes,
+        show_constraints => $show_constraints,
+        height           => $height || 0,
+        width            => $width  || 0,
+        fontsize         => $fontsize,
+        fontname         => $fontname,
+        nodeattrs        => \%nodeattrs,
+        edgeattrs        => \%edgeattrs,
+        graphattrs       => \%graphattrs,
+        show_fields      => $no_fields ? 0 : 1,
     },
 ) or die SQL::Translator->error;