contrib/windows/update_tortoisehg_libs.py @ 16e0bcd4f854

Switch to the new hg spanset API

This api was introduced in 3.2, and the indexation is not supported anymore (probably since
3.4)

Patch provided by David Douard
(see https://bitbucket.org/sjl/hg-review/pull-requests/8/better-handling-of-obsolescence-markers/diff#comment-8174971)
author Christophe de Vienne <christophe@cdevienne.info>
date Fri, 19 Aug 2016 18:21:28 +0200
parents 1d9c439bfe54
children fc97fabaf28d
# 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 <djpnewton@gmail.com>
#
# 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'