printenv.py
52 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
/ tests / printenv.py
|
r25477 | #!/usr/bin/env python | ||
# | ||||
|
r4285 | # simple script to be used in hooks | ||
# | ||||
# put something like this in the repo .hg/hgrc: | ||||
# | ||||
# [hooks] | ||||
|
r17018 | # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output] | ||
|
r4285 | # | ||
# - <hookname> is a mandatory argument (e.g. "changegroup") | ||||
# - [exit] is the exit code of the hook (default: 0) | ||||
# - [output] is the name of the output file (default: use sys.stdout) | ||||
# the file will be opened in append mode. | ||||
# | ||||
|
r28944 | from __future__ import absolute_import | ||
|
r4285 | import os | ||
import sys | ||||
|
r7080 | try: | ||
import msvcrt | ||||
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) | ||||
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) | ||||
|
r7186 | msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) | ||
|
r7080 | except ImportError: | ||
pass | ||||
|
r4285 | exitcode = 0 | ||
out = sys.stdout | ||||
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") | ||||
|
r4643 | # variables with empty values may not exist on all platforms, filter | ||
# them now for portability sake. | ||||
|
r16963 | env = [(k, v) for k, v in os.environ.iteritems() | ||
|
r4643 | if k.startswith("HG_") and v] | ||
|
r4285 | env.sort() | ||
out.write("%s hook: " % name) | ||||
|
r16982 | if os.name == 'nt': | ||
filter = lambda x: x.replace('\\', '/') | ||||
else: | ||||
filter = lambda x: x | ||||
vars = ["%s=%s" % (k, filter(v)) for k, v in env] | ||||
out.write(" ".join(vars)) | ||||
|
r4285 | out.write("\n") | ||
out.close() | ||||
sys.exit(exitcode) | ||||