Bumping version to 1.60
[dbsrgits/SQL-Translator.git] / script / sqlt-diagram
index 7af13f8..58127ee 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 
 # -------------------------------------------------------------------
-# Copyright (C) 2002-2009 SQLFairy Authors
+# 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
 #
 # 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
 # -------------------------------------------------------------------
 
-=head1 NAME 
+=head1 NAME
 
 sqlt-diagram - Automatically create a diagram from a database schema
 
@@ -37,12 +37,14 @@ 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-like Comma-separated list of regexen to exclude tables
     --debug            Print debugging information
 
 =head1 DESCRIPTION
@@ -61,7 +63,7 @@ This can prove too permissive, however, as you probably don't want a
 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.
 
@@ -75,33 +77,36 @@ use Pod::Usage;
 use SQL::Translator;
 
 use vars '$VERSION';
-$VERSION = '1.59';
+$VERSION = '1.60';
 
 #
 # Get arguments.
 #
-my ( 
-    $out_file, $image_type, $db_driver, $title, $no_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, $help
+    $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,
-    't|title:s'       => \$title,
-    'c|columns:i'     => \$no_columns,
-    'n|no-lines'      => \$no_lines,
-    'font-size:s'     => \$font_size,
-    'gutter:i'        => \$gutter,
-    'color'           => \$add_color,
-    'show-fk-only'    => \$show_fk_only,
-    'natural-join'    => \$natural_join,
-    'natural-join-pk' => \$join_pk_only,
-    's|skip:s'        => \$skip_fields,
-    'debug'           => \$debug,
-    'h|help'          => \$help,
+    'd|db|f|from=s'      => \$db_driver,
+    'o|output:s'         => \$out_file,
+    'i|image:s'          => \$output_type,
+    't|title:s'          => \$title,
+    'c|columns:i'        => \$num_columns,
+    'n|no-lines'         => \$no_lines,
+    'font-size:s'        => \$font_size,
+    'gutter:i'           => \$gutter,
+    'color'              => \$add_color,
+    'show-fk-only'       => \$show_fk_only,
+    'natural-join'       => \$natural_join,
+    'natural-join-pk'    => \$join_pk_only,
+    's|skip:s'           => \$skip_fields,
+    'skip-tables:s'      => \$skip_tables,
+    'skip-tables-like:s' => \$skip_tables_like,
+    'debug'              => \$debug,
+    'h|help'             => \$help,
 ) or die pod2usage;
 my @files = @ARGV; # the create script(s) for the original db
 
@@ -109,26 +114,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( 
+my $translator       =  SQL::Translator->new(
     from             => $db_driver,
     to               => 'Diagram',
     debug            => $debug || 0,
     producer_args    => {
-        out_file     => $out_file,
-        image_type   => $image_type,
-        gutter       => $gutter || 0,
-        title        => $title,
-        no_columns   => $no_columns,
-        no_lines     => $no_lines,
-        font_size    => $font_size,
-        add_color    => $add_color,
-        show_fk_only => $show_fk_only,
-        natural_join => $natural_join,
-        join_pk_only => $join_pk_only,
-        skip_fields  => $skip_fields,
+        out_file         => $out_file,
+        output_type      => $output_type,
+        gutter           => $gutter || 0,
+        title            => $title,
+        num_columns      => $num_columns,
+        no_lines         => $no_lines,
+        font_size        => $font_size,
+        add_color        => $add_color,
+        show_fk_only     => $show_fk_only,
+        natural_join     => $natural_join,
+        join_pk_only     => $join_pk_only,
+        skip_fields      => $skip_fields,
+        skip_tables      => $skip_tables,
+        skip_tables_like => $skip_tables_like,
     },
 ) or die SQL::Translator->error;
 
+binmode STDOUT unless $out_file;
+
 for my $file (@files) {
     my $output = $translator->translate( $file ) or die
                  "Error: " . $translator->error;