view tests/printenv.py @ 13624:78cc35e75ecc stable

eol: do not abort when win32text is found, only warn The win32text extension does not break eol or vice-versa, so it is not a fatal error to have both of them enabled. It's just folly. So spewing warnings in this condition is preferrable to aborting. When both extensions are enabled, the user now sees: % hg st the eol extension is incompatible with the win32text extension win32text is deprecated: http://mercurial.selenic.com/wiki/Win32TextExtension M hgext/eol.py
author Steve Borho <steve@borho.org>
date Sun, 13 Mar 2011 10:03:06 -0500
parents 682edefe7dbb
children c19113e842d3
line wrap: on
line source

# 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 for k, v in os.environ.iteritems()
       if k.startswith("HG_") and v]
env.sort()

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)