contrib/win32/hg.bat
author Augie Fackler <augie@google.com>
Mon, 24 Jul 2017 14:38:40 -0400
changeset 33839 7d5bc0e5b88f
parent 23934 975c4fc4a512
child 46885 fc8a5c9ecee0
permissions -rw-r--r--
py3: introduce a wrapper for __builtins__.{raw_,}input() In order to make this work, we have to wrap the io streams in a TextIOWrapper so that __builtins__.input() can do unicode IO on Python 3. We can't just restore the original (unicode) sys.std* because we might be running a cmdserver, and if we blindly restore sys.* to the original values then we end up breaking the cmdserver. Sadly, TextIOWrapper tries to close the underlying stream during its __del__, so we have to make a sublcass to prevent that. If you see errors like: TypeError: a bytes-like object is required, not 'str' On an input() or print() call on Python 3, the substitution of sys.std* is probably the root cause. A previous version of this change tried to put the bytesinput() method in pycompat - it turns out we need to do some encoding handling, so we have to be in a higher layer that's allowed to use mercurial.encoding.encoding. As a result, this is in util for now, with the TextIOWrapper subclass hiding in encoding.py. I'm not sure of a better place for the time being. Differential Revision: https://phab.mercurial-scm.org/D299
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6513
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     1
@echo off
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     2
rem Windows Driver script for Mercurial
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     3
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     4
setlocal
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     5
set HG=%~f0
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
     6
19091
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
     7
rem Use a full path to Python (relative to this script) if it exists,
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
     8
rem as the standard Python install does not put python.exe on the PATH...
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
     9
rem Otherwise, expect that python.exe can be found on the PATH.
6513
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
    10
rem %~dp0 is the directory of this script
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
    11
19091
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
    12
if exist "%~dp0..\python.exe" (
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
    13
    "%~dp0..\python" "%~dp0hg" %*
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
    14
) else (
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
    15
    python "%~dp0hg" %*
f01a351db791 win32: use explicit path to "python.exe" only if it exists
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12653
diff changeset
    16
)
6513
66e87c11447d Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
diff changeset
    17
endlocal
23934
975c4fc4a512 hg.bat: return exit code explicitly for indirect invocation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19091
diff changeset
    18
975c4fc4a512 hg.bat: return exit code explicitly for indirect invocation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 19091
diff changeset
    19
exit /b %ERRORLEVEL%