printenv.py
54 lines
| 1.4 KiB
| text/x-python
|
PythonLexer
/ tests / printenv.py
Matt Mackall
|
r25477 | #!/usr/bin/env python | ||
# | ||||
Alexis S. L. Carvalho
|
r4285 | # simple script to be used in hooks | ||
# | ||||
# put something like this in the repo .hg/hgrc: | ||||
# | ||||
# [hooks] | ||||
Mads Kiilerich
|
r17018 | # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output] | ||
Alexis S. L. Carvalho
|
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. | ||||
# | ||||
Robert Stanca
|
r28944 | from __future__ import absolute_import | ||
Alexis S. L. Carvalho
|
r4285 | 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 | ||||
Augie Fackler
|
r38315 | out = getattr(out, 'buffer', out) | ||
Alexis S. L. Carvalho
|
r4285 | |||
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. | ||||
Augie Fackler
|
r36268 | env = [(k, v) for k, v in os.environ.items() | ||
Patrick Mezard
|
r4643 | if k.startswith("HG_") and v] | ||
Alexis S. L. Carvalho
|
r4285 | env.sort() | ||
Pulkit Goyal
|
r38123 | out.write(b"%s hook: " % name.encode('ascii')) | ||
Adrian Buehlmann
|
r16982 | if os.name == 'nt': | ||
filter = lambda x: x.replace('\\', '/') | ||||
else: | ||||
filter = lambda x: x | ||||
Pulkit Goyal
|
r38123 | vars = [b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii')) | ||
for k, v in env] | ||||
out.write(b" ".join(vars)) | ||||
out.write(b"\n") | ||||
Alexis S. L. Carvalho
|
r4285 | out.close() | ||
sys.exit(exitcode) | ||||