]> git.phdru.name Git - sqlconvert.git/commitdiff
Change arguments handling
authorOleg Broytman <phd@phdru.name>
Fri, 2 Sep 2016 21:16:02 +0000 (00:16 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 2 Sep 2016 21:32:54 +0000 (00:32 +0300)
Allow `-` to name stdin or stdout.
Input file is always the first argument, no need to use option `-i`.
Output file can be named with `-o` or as the second argument
but not both. Option `-o` is useful when there is no input file (input
is redirected, for example: `mysql-to-sql.py -o out.sql < in.sql`).

docs/index.rst
scripts/mysql-to-sql.py

index e9c3631699c7b36bb1f52cdb9744167139f1b479..356f1d124872edffef16db48578a1a497ff03764 100644 (file)
@@ -25,12 +25,23 @@ mysql-to-sql.py
 
 Usage::
 
-    mysql-to-sql.py [-i infile] [-o outfile]
+    mysql-to-sql.py [infile] [[-o] outfile]
 
 Options::
 
-    -i, --infile infile    Input file, stdin if absent
-    -o, --outfile outfile  Output file, stdout if absent
+    infile                 Input file, stdin if absent or '-'
+    -o, --outfile outfile  Output file, stdout if absent or '-'
+
+Option `-o` is useful when infile is absent (input is redirected), for
+example::
+
+    mysql-to-sql.py -o outfile.sql < infile.sql
+    cat infile.sql | mysql-to-sql.py -o outfile.sql
+
+But of course it simple can be::
+
+    mysql-to-sql.py - outfile.sql < infile.sql
+    cat infile.sql | mysql-to-sql.py - outfile.sql
 
 
 Indices and tables
index be137a849be27ce42bc4fc96db5c6679c42c2c14..c40563fed0e7d849554eac67358026789bbc090f 100755 (executable)
@@ -24,27 +24,46 @@ def main(infile, outfile):
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description='Convert MySQL to SQL')
-    parser.add_argument('-i', '--infile', help='input file name')
     parser.add_argument('-o', '--outfile', help='output file name')
+    parser.add_argument('infile', help='input file name')
+    parser.add_argument('output_file', nargs='?', help='output file name')
     args = parser.parse_args()
 
     if args.infile:
-        infile = open(args.infile, 'rt')
+        if args.infile == '-':
+            infile = sys.stdin
+        else:
+            infile = open(args.infile, 'rt')
     else:
         infile = sys.stdin
-        if infile.isatty():
-            print("Error: cannot input from console", file=sys.stderr)
-            parser.print_help()
-            sys.exit()
+
+    if infile.isatty():
+        print("Error: cannot read from console", file=sys.stderr)
+        parser.print_help()
+        sys.exit(1)
 
     if args.outfile:
+        if args.output_file:
+            print("Error: too many output files", file=sys.stderr)
+            parser.print_help()
+            sys.exit(1)
+
+        outfile = args.outfile
+
+    elif args.output_file:
+        outfile = args.output_file
+
+    else:
+        outfile = '-'
+
+    if outfile == '-':
+        outfile = sys.stdout
+    else:
         try:
-            outfile = open(args.outfile, 'wt')
+            outfile = open(outfile, 'wt')
         except:
             if infile is not sys.stdin:
                 infile.close()
             raise
-    else:
-        outfile = sys.stdout
 
     main(infile, outfile)