# HG changeset patch # User Steve Losh # Date 1280266394 14400 # Node ID 1d9c439bfe54a43f87edc67f1e349c0ee9cd45e0 # Parent cada9aab8b6ffeaa69a950cb7b45aa3681de501a contrib/windows: add a script by Daniel Newton to update THG libs diff -r cada9aab8b6f -r 1d9c439bfe54 contrib/windows/update_tortoisehg_libs.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/windows/update_tortoisehg_libs.py Tue Jul 27 17:33:14 2010 -0400 @@ -0,0 +1,57 @@ +# this script will update tortoisehgs python libs to include the missing libs that hg-review needs +# (tested with Python 2.6 and Tortoisehg 1.1) +# +# Daniel Newton +# +# Version 1.0 (2010/07/28) + +import sys +import os + +# check python version +if sys.version[:3] != '2.6': + sys.exit('Need Python 2.6') + +# check for windows +if sys.platform != 'win32': + sys.exit('Script only works on win32') + +# list of libs to add +libs = ('Cookie.py', 'decimal.py', 'htmlentitydefs.py', 'code.py', 'codeop.py', 'compiler', 'numbers.py', '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'