##// END OF EJS Templates
flagutil: move addflagprocessor to the new module (API)
flagutil: move addflagprocessor to the new module (API)

File last commit:

r41065:73da729c default
r42958:6d61be15 default
Show More
printenv.py
79 lines | 1.9 KiB | text/x-python | PythonLexer
Matt Mackall
tests: make printenv executable
r25477 #!/usr/bin/env python
#
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 # simple script to be used in hooks
#
# put something like this in the repo .hg/hgrc:
#
# [hooks]
Mads Kiilerich
tests: consistently use printenv.py the same MSYS/Windows-compatible way...
r17018 # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output]
Alexis S. L. Carvalho
Add tests/printenv.py...
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
py3: use absolute_import in printenv.py
r28944 from __future__ import absolute_import
Boris Feld
tests: update printenv.py argument parsing...
r41054 import argparse
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 import os
import sys
Patrick Mezard
tests: Windows compatibility fixes...
r7080 try:
import msvcrt
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
Dirkjan Ochtman
clean up trailing spaces, leading spaces in C
r7186 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
Patrick Mezard
tests: Windows compatibility fixes...
r7080 except ImportError:
pass
Boris Feld
tests: update printenv.py argument parsing...
r41054 parser = argparse.ArgumentParser()
parser.add_argument("name", help="the hook name, used for display")
parser.add_argument(
"exitcode",
nargs="?",
default=0,
type=int,
help="the exit code for the hook",
)
parser.add_argument(
"out", nargs="?", default=None, help="where to write the output"
)
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065 parser.add_argument(
"--line",
action="store_true",
help="print environment variables one per line instead of on a single line",
)
Boris Feld
tests: update printenv.py argument parsing...
r41054 args = parser.parse_args()
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285
Boris Feld
tests: update printenv.py argument parsing...
r41054 if args.out is None:
out = sys.stdout
out = getattr(out, "buffer", out)
else:
out = open(args.out, "ab")
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285
Patrick Mezard
printenv: filter empty environment variables for portability.
r4643 # variables with empty values may not exist on all platforms, filter
# them now for portability sake.
Augie Fackler
printenv: port to python3...
r36268 env = [(k, v) for k, v in os.environ.items()
Patrick Mezard
printenv: filter empty environment variables for portability.
r4643 if k.startswith("HG_") and v]
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 env.sort()
Boris Feld
tests: update printenv.py argument parsing...
r41054 out.write(b"%s hook: " % args.name.encode('ascii'))
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 if os.name == 'nt':
filter = lambda x: x.replace('\\', '/')
else:
filter = lambda x: x
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065
Pulkit Goyal
py3: use bytes in tests/printenv.py...
r38123 vars = [b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii'))
for k, v in env]
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065
# Print variables on out
if not args.line:
out.write(b" ".join(vars))
else:
for var in vars:
out.write(var)
out.write(b"\n")
Pulkit Goyal
py3: use bytes in tests/printenv.py...
r38123 out.write(b"\n")
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 out.close()
Boris Feld
tests: update printenv.py argument parsing...
r41054 sys.exit(args.exitcode)