diff options
author | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
commit | a498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch) | |
tree | daf8119dae1749b5165b68033a1b23a7375ce9ce /tests/printenv.py | |
download | mercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz |
Tarball conversion
Diffstat (limited to 'tests/printenv.py')
-rw-r--r-- | tests/printenv.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/printenv.py b/tests/printenv.py new file mode 100644 index 0000000..d00e149 --- /dev/null +++ b/tests/printenv.py @@ -0,0 +1,49 @@ +# simple script to be used in hooks +# +# put something like this in the repo .hg/hgrc: +# +# [hooks] +# changegroup = python "$TESTDIR/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 + +try: + import msvcrt + msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) +except ImportError: + pass + +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") + +# 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.iteritems() + if k.startswith("HG_") and v] +env.sort() + +out.write("%s hook: " % name) +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)) +out.write("\n") +out.close() + +sys.exit(exitcode) |