From e8bbc52debfd1b28517946d65db257e6b6d92e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Wirtel?= Date: Wed, 10 Oct 2018 00:41:33 +0200 Subject: [PATCH] bpo-23596: Use argparse for the command line of gzip (GH-9781) Co-authored-by: Antony Lee --- Lib/gzip.py | 25 +++++++++---------- .../2018-10-09-23-51-07.bpo-23596.rdnert.rst | 1 + 2 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2018-10-09-23-51-07.bpo-23596.rdnert.rst diff --git a/Lib/gzip.py b/Lib/gzip.py index ddc7bda1fec..a34d01ae36e 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -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 index 00000000000..ef71720c56f --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2018-10-09-23-51-07.bpo-23596.rdnert.rst @@ -0,0 +1 @@ +Use argparse for the command line of the gzip module. Patch by Antony Lee