]> granicus.if.org Git - python/commitdiff
bpo-23596: Use argparse for the command line of gzip (GH-9781)
authorStéphane Wirtel <stephane@wirtel.be>
Tue, 9 Oct 2018 22:41:33 +0000 (00:41 +0200)
committerJulien Palard <julien@palard.fr>
Tue, 9 Oct 2018 22:41:33 +0000 (00:41 +0200)
Co-authored-by: Antony Lee <anntzer.lee@gmail.com>
Lib/gzip.py
Misc/NEWS.d/next/Tests/2018-10-09-23-51-07.bpo-23596.rdnert.rst [new file with mode: 0644]

index ddc7bda1fecbbd25ef4f3db6175f4e59e897f142..a34d01ae36e1212f0bd9d40d27e67af3718d4891 100644 (file)
@@ -532,18 +532,17 @@ def decompress(data):
         return f.read()
 
 
-def _test():
-    # Act like gzip; with -d, act like gunzip.
-    # The input file is not deleted, however, nor are any other gzip
-    # options or features supported.
-    args = sys.argv[1:]
-    decompress = args and args[0] == "-d"
-    if decompress:
-        args = args[1:]
-    if not args:
-        args = ["-"]
-    for arg in args:
-        if decompress:
+def main():
+    from argparse import ArgumentParser
+    parser = ArgumentParser(description=
+        "A simple command line interface for the gzip module: act like gzip, "
+        "but do not delete the input file.")
+    parser.add_argument("-d", "--decompress", action="store_true",
+                        help="act like gunzip instead of gzip")
+    parser.add_argument("args", nargs="*", default=["-"], metavar='file')
+    args = parser.parse_args()
+    for arg in args.args:
+        if args.decompress:
             if arg == "-":
                 f = GzipFile(filename="", mode="rb", fileobj=sys.stdin.buffer)
                 g = sys.stdout.buffer
@@ -571,4 +570,4 @@ def _test():
             f.close()
 
 if __name__ == '__main__':
-    _test()
+    main()
diff --git a/Misc/NEWS.d/next/Tests/2018-10-09-23-51-07.bpo-23596.rdnert.rst b/Misc/NEWS.d/next/Tests/2018-10-09-23-51-07.bpo-23596.rdnert.rst
new file mode 100644 (file)
index 0000000..ef71720
--- /dev/null
@@ -0,0 +1 @@
+Use argparse for the command line of the gzip module. Patch by Antony Lee