Make use of optparse to fix argument parsing for Python 2.6 in bin/chpathtool.py.
authorTom Wijsman <tomwij@gentoo.org>
Sun, 29 Dec 2013 02:21:48 +0000 (03:21 +0100)
committerBrian Dolbec <dolsen@gentoo.org>
Sun, 5 Jan 2014 16:18:35 +0000 (08:18 -0800)
bin/chpathtool.py

index aa3b7d47842839bf6765e7085fc5d1c4a00a5732..0cb5d6443d900b4fa0b7e7dfeef89f4ca610167e 100755 (executable)
@@ -13,6 +13,12 @@ import sys
 
 from portage.util._argparse import ArgumentParser
 
+# Argument parsing compatibility for Python 2.6 using optparse.
+if sys.hexversion < 0x2070000:
+       from optparse import OptionParser
+
+from optparse import OptionError
+
 CONTENT_ENCODING = 'utf_8'
 FS_ENCODING = 'utf_8'
 
@@ -147,15 +153,36 @@ def chpath_inplace_symlink(filename, st, old, new):
 def main(argv):
 
        parser = ArgumentParser(description=__doc__)
-       parser.add_argument('location', default=None,
-               help='root directory (e.g. $D)')
-       parser.add_argument('old', default=None,
-               help='original build prefix (e.g. /)')
-       parser.add_argument('new', default=None,
-               help='new install prefix (e.g. $EPREFIX)')
-       opts = parser.parse_args(argv)
-
-       location, old, new = opts.location, opts.old, opts.new
+       try:
+               parser.add_argument('location', default=None,
+                       help='root directory (e.g. $D)')
+               parser.add_argument('old', default=None,
+                       help='original build prefix (e.g. /)')
+               parser.add_argument('new', default=None,
+                       help='new install prefix (e.g. $EPREFIX)')
+               opts = parser.parse_args(argv)
+
+               location, old, new = opts.location, opts.old, opts.new
+       except OptionError:
+               # Argument parsing compatibility for Python 2.6 using optparse.
+               if sys.hexversion < 0x2070000:
+                       parser = OptionParser(description=__doc__,
+                               usage="usage: %prog [-h] location old new\n\n" + \
+                               "  location: root directory (e.g. $D)\n" + \
+                               "  old:      original build prefix (e.g. /)\n" + \
+                               "  new:      new install prefix (e.g. $EPREFIX)")
+
+                       (opts, args) = parser.parse_args()
+
+                       if len(args) != 3:
+                               parser.print_usage()
+                               print("%s: error: expected 3 arguments, got %i"
+                                       % (__file__, len(args)))
+                               return
+
+                       location, old, new = args[0:3]
+               else:
+                       raise
 
        is_text_file = IsTextFile()