printenv.py
58 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
/ tests / printenv.py
Alexis S. L. Carvalho
|
r4285 | # simple script to be used in hooks | ||
# copy it to the current directory when the test starts: | ||||
# | ||||
# cp "$TESTDIR"/printenv.py . | ||||
# | ||||
# put something like this in the repo .hg/hgrc: | ||||
# | ||||
# [hooks] | ||||
# changegroup = python ../printenv.py <hookname> [exit] [output] | ||||
# | ||||
# - <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. | ||||
# | ||||
import os | ||||
import sys | ||||
Patrick Mezard
|
r7080 | try: | ||
import msvcrt | ||||
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) | ||||
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) | ||||
Dirkjan Ochtman
|
r7186 | msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) | ||
Patrick Mezard
|
r7080 | except ImportError: | ||
pass | ||||
Alexis S. L. Carvalho
|
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") | ||||
Patrick Mezard
|
r4643 | # variables with empty values may not exist on all platforms, filter | ||
# them now for portability sake. | ||||
Thomas Arendsen Hein
|
r4659 | env = [k for k, v in os.environ.iteritems() | ||
Patrick Mezard
|
r4643 | if k.startswith("HG_") and v] | ||
Alexis S. L. Carvalho
|
r4285 | env.sort() | ||
# edit the variable part of the variable | ||||
url = os.environ.get("HG_URL", "") | ||||
if url.startswith("file:"): | ||||
os.environ["HG_URL"] = "file:" | ||||
elif url.startswith("remote:http"): | ||||
os.environ["HG_URL"] = "remote:http" | ||||
Matt Mackall
|
r7787 | if "HG_PENDING" in os.environ: | ||
os.environ["HG_PENDING"] = os.environ["HG_PENDING"] and "true" | ||||
Alexis S. L. Carvalho
|
r4285 | out.write("%s hook: " % name) | ||
for v in env: | ||||
out.write("%s=%s " % (v, os.environ[v])) | ||||
out.write("\n") | ||||
out.close() | ||||
sys.exit(exitcode) | ||||