use DBI and a recent revision of DBD::Pg
[dbsrgits/SQL-Translator.git] / bin / sqlt
index cc369bd..45a5c33 100755 (executable)
--- a/bin/sqlt
+++ b/bin/sqlt
@@ -1,7 +1,8 @@
 #!/usr/bin/perl -w
+# vim: set ft=perl:
 
 # -------------------------------------------------------------------
-# $Id: sqlt,v 1.3 2003-09-03 14:52:50 dlc Exp $
+# $Id: sqlt,v 1.7 2003-10-10 16:44:27 dlc Exp $
 # -------------------------------------------------------------------
 # Copyright (C) 2002 Ken Y. Clark <kclar@cpan.org>,
 #                    darren chamberlain <darren@cpan.org>
@@ -49,6 +50,12 @@ To translate a schema:
     --trace            Print parser trace info
     --show-warnings    Print warnings to STDERR
 
+  DBI Parser Options:
+
+    --dsn              DSN for connecting to database
+    --db-user          Database user
+    --db-password      Database password              
+
   xSV Parser Options:
 
     --fs               The field separator
@@ -106,7 +113,7 @@ use Pod::Usage;
 use SQL::Translator;
 
 use vars qw( $VERSION );
-$VERSION = sprintf "%d.%02d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/;
+$VERSION = sprintf "%d.%02d", q$Revision: 1.7 $ =~ /(\d+)\.(\d+)/;
 
 my $from;             # the original database
 my $to;               # the destination database 
@@ -130,6 +137,9 @@ my $template;         # template to pass to TTSchema producer
 my $title;            # title for HTML/POD producer
 my $emit_empty_tags;  # show empty XML tags
 my $attrib_values;    # use XML attributes instead of tags
+my $dsn;              # DBI parser 
+my $db_user;          # DBI parser 
+my $db_password;      # DBI parser 
 
 GetOptions(
     'add-drop-table'  => \$add_drop_table,
@@ -153,9 +163,13 @@ GetOptions(
     'title:s'         => \$title,
     'trace'           => \$trace,
     'v|validate'      => \$validate,
+    'dsn:s'           => \$dsn,
+    'db-user:s'       => \$db_user,
+    'db-password:s'   => \$db_password,
 ) or pod2usage(2);
 
 my @files = @ARGV; # source files
+@files = ('-') unless (@files);
 
 pod2usage(1) if $help;
 
@@ -171,6 +185,9 @@ my $translator           =  SQL::Translator->new(
         scan_fields      => $no_scan ? 0 : 1,
         field_separator  => $field_separator,
         record_separator => $record_separator,
+        dsn              => $dsn,
+        db_user          => $db_user,
+        db_password      => $db_password,
     },
     producer_args   => {
         imap_file        => $imap_file,
@@ -199,13 +216,14 @@ if ( $list ) {
     exit(0);
 }
 
-pod2usage(2) unless $from && $to && @files;
+pod2usage( msg => 'Please supply "from" and "to" arguments' ) unless $from && $to;
 
 $translator->parser($from);
 $translator->producer($to);
 
 for my $file (@files) {
-    my $output = $translator->translate(file => $file) or die
+    my @args = ($file eq '-') ? (data => \*STDIN) : (file => $file);
+    my $output = $translator->translate(@args) or die
         "Error: " . $translator->error;
     print $output;
 }