Added -o/--output-file option as per GNU msgfmt to specify the output
authorBarry Warsaw <barry@python.org>
Fri, 2 Mar 2001 16:53:54 +0000 (16:53 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 2 Mar 2001 16:53:54 +0000 (16:53 +0000)
file instead of using inputfilename.mo

Tools/i18n/msgfmt.py

index aa72a075ecf49cb8cab010a02e08a44d282cd146..411e3aeff58734210ffa8874e6edc5af42e773a6 100755 (executable)
@@ -11,6 +11,11 @@ GNU msgfmt program, however, it is a simpler implementation.
 Usage: msgfmt.py [OPTIONS] filename.po
 
 Options:
+    -o file
+    --output-file=file
+        Specify the output file to write to.  If omitted, output will go to a
+        file named filename.mo (based off the input file name).
+
     -h
     --help
         Print this message and exit.
@@ -18,15 +23,15 @@ Options:
     -V
     --version
         Display version information and exit.
-
 """
 
 import sys
+import os
 import getopt
 import struct
 import array
 
-__version__ = "1.0"
+__version__ = "1.1"
 
 MESSAGES = {}
 
@@ -91,17 +96,18 @@ def generate():
 
 
 \f
-def make(filename):
+def make(filename, outfile):
     ID = 1
     STR = 2
 
-    # Compute .mo name from .po name
+    # Compute .mo name from .po name and arguments
     if filename.endswith('.po'):
         infile = filename
-        outfile = filename[:-2] + 'mo'
     else:
         infile = filename + '.po'
-        outfile = filename + '.mo'
+    if outfile is None:
+        outfile = os.path.splitext(infile)[0] + '.mo'
+
     try:
         lines = open(infile).readlines()
     except IOError, msg:
@@ -159,7 +165,6 @@ def make(filename):
     # Compute output
     output = generate()
 
-    # Save output
     try:
         open(outfile,"wb").write(output)
     except IOError,msg:
@@ -169,10 +174,12 @@ def make(filename):
 \f
 def main():
     try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hV', ['help','version'])
+        opts, args = getopt.getopt(sys.argv[1:], 'hVo:',
+                                   ['help', 'version', 'output-file='])
     except getopt.error, msg:
         usage(1, msg)
 
+    outfile = None
     # parse options
     for opt, arg in opts:
         if opt in ('-h', '--help'):
@@ -180,6 +187,8 @@ def main():
         elif opt in ('-V', '--version'):
             print >> sys.stderr, "msgfmt.py", __version__
             sys.exit(0)
+        elif opt in ('-o', '--output-file'):
+            outfile = arg
     # do it
     if not args:
         print >> sys.stderr, 'No input file given'
@@ -187,7 +196,7 @@ def main():
         return
 
     for filename in args:
-        make(filename)
+        make(filename, outfile)
 
 
 if __name__ == '__main__':