D5452: tests: update printenv.py argument parsing
lothiraldan (Boris Feld)
phabricator at mercurial-scm.org
Wed Dec 19 16:25:09 UTC 2018
lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
We are about to introduce a new flag for printing the HG environment variables
one per line and it's easier to do when using the argparse module for argument
parsing.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5452
AFFECTED FILES
tests/printenv.py
CHANGE DETAILS
diff --git a/tests/printenv.py b/tests/printenv.py
--- a/tests/printenv.py
+++ b/tests/printenv.py
@@ -13,6 +13,7 @@
# the file will be opened in append mode.
#
from __future__ import absolute_import
+import argparse
import os
import sys
@@ -24,23 +25,33 @@
except ImportError:
pass
-exitcode = 0
-out = sys.stdout
-out = getattr(out, 'buffer', out)
+parser = argparse.ArgumentParser()
+parser.add_argument("name", help="the hook name, used for display")
+parser.add_argument(
+ "exitcode",
+ nargs="?",
+ default=0,
+ type=int,
+ help="the exit code for the hook",
+)
+parser.add_argument(
+ "out", nargs="?", default=None, help="where to write the output"
+)
+args = parser.parse_args()
-name = sys.argv[1]
-if len(sys.argv) > 2:
- exitcode = int(sys.argv[2])
- if len(sys.argv) > 3:
- out = open(sys.argv[3], "ab")
+if args.out is None:
+ out = sys.stdout
+ out = getattr(out, "buffer", out)
+else:
+ out = open(args.out, "ab")
# variables with empty values may not exist on all platforms, filter
# them now for portability sake.
env = [(k, v) for k, v in os.environ.items()
if k.startswith("HG_") and v]
env.sort()
-out.write(b"%s hook: " % name.encode('ascii'))
+out.write(b"%s hook: " % args.name.encode('ascii'))
if os.name == 'nt':
filter = lambda x: x.replace('\\', '/')
else:
@@ -51,4 +62,4 @@
out.write(b"\n")
out.close()
-sys.exit(exitcode)
+sys.exit(args.exitcode)
To: lothiraldan, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list