contrib/windows/update_tortoisehg_libs.py @ b443b42afe6f issue-90
Convert unicode to ascii for mercurial API. Mercurial API can't work with python's Unicode objects. Details http://mercurial.selenic.com/wiki/EncodingStrategy#Unicode_strings
| author | Alexander Stepanenko <olexander314@gmail.com> |
|---|---|
| date | Mon, 15 Dec 2014 02:06:13 +0300 |
| parents | fc97fabaf28d |
| children | (none) |
# this script will update tortoisehgs python libs to include the missing libs that hg-review needs # (tested with Python 2.7.3 and Tortoisehg 2.6.2) # # Daniel Newton <djpnewton@gmail.com> # # Version 1.1 (2013/01/18) import sys import os # check python version if sys.version[:3] != '2.7': sys.exit('Need Python 2.7') # check for windows if sys.platform != 'win32': sys.exit('Script only works on win32') # list of libs to add libs = ('Cookie.py', 'htmlentitydefs.py', 'code.py', 'codeop.py', 'compiler', 'symbol.py', 'uuid.py') # find python lib path pylib_path = os.path.join(os.path.dirname(sys.executable), 'lib') # find tortoisehg libary.zip import _winreg hKey = _winreg.OpenKey (_winreg.HKEY_CURRENT_USER, r"Software\TortoiseHg") value, type = _winreg.QueryValueEx (hKey, "") # default key value hKey.Close() torthg_lib_path = os.path.join(value, "library.zip") # check validity of paths if not os.path.exists(pylib_path): sys.exit("%s does not exist" % pylib_path) if not os.path.exists(torthg_lib_path): sys.exit("%s does not exist" % torthg_lib_path) # backup tortoisehg lib import shutil shutil.copyfile(torthg_lib_path, torthg_lib_path + ".bak") # add libs to tortoisehg import zipfile zip = zipfile.ZipFile(torthg_lib_path, 'a') for lib in libs: lib_path = os.path.join(pylib_path, lib) lib_path_arcname = os.path.basename(lib_path) zip.write(lib_path, lib_path_arcname) if os.path.isdir(lib_path): child_paths = os.listdir(lib_path) for lib_path_child in child_paths: lib_path_child_arcname = os.path.join(lib_path_arcname, lib_path_child) lib_path_child = os.path.join(lib_path, lib_path_child) zip.write(lib_path_child, lib_path_child_arcname) zip.close() print 'all done'