##// END OF EJS Templates
histedit: py3 fixes for curses mode...
histedit: py3 fixes for curses mode Differential Revision: https://phab.mercurial-scm.org/D8150

File last commit:

r43346:2372284d default
r44892:9b8e13a0 stable
Show More
printenv.py
80 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
Augie Fackler
formatting: blacken the codebase...
r43346
Patrick Mezard
tests: Windows compatibility fixes...
r7080 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
formatting: blacken the codebase...
r43346 env = [(k, v) for k, v in os.environ.items() 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
Augie Fackler
formatting: blacken the codebase...
r43346 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)