Add tests/printenv.py
authorAlexis S. L. Carvalho <alexis@cecm.usp.br>
Mon, 26 Mar 2007 23:49:56 -0300
changeset 4285 4fd6f7e60894
parent 4284 a04141f51056
child 4286 949516072388
Add tests/printenv.py This is a small script that can be used as a hook to print the HG_* environment variables without relying on the shell.
tests/printenv.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/printenv.py	Mon Mar 26 23:49:56 2007 -0300
@@ -0,0 +1,44 @@
+# simple script to be used in hooks
+# copy it to the current directory when the test starts:
+#
+#     cp "$TESTDIR"/printenv.py .
+#
+# put something like this in the repo .hg/hgrc:
+#
+#     [hooks]
+#     changegroup = python ../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
+
+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")
+
+env = [v for v in os.environ if v.startswith("HG_")]
+env.sort()
+
+# edit the variable part of the variable
+url = os.environ.get("HG_URL", "")
+if url.startswith("file:"):
+    os.environ["HG_URL"] = "file:"
+elif url.startswith("remote:http"):
+    os.environ["HG_URL"] = "remote:http"
+
+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)