1# debugthg.py - debugging library for TortoiseHg shell extensions
2#
3# Copyright 2008 Steve Borho <steve@borho.org>
4#
5# This software may be used and distributed according to the terms of the
6# GNU General Public License version 2, incorporated herein by reference.
7
8from __future__ import print_function
9
10debugging = ''
11try:
12    from mercurial.windows import winreg
13    try:
14        hkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
15                           r"Software\TortoiseHg", 0,
16                           winreg.KEY_ALL_ACCESS)
17        val = winreg.QueryValueEx(hkey, 'OverlayDebug')[0]
18        if val in ('1', 'True'):
19            debugging += 'O'
20        val = winreg.QueryValueEx(hkey, 'ContextMenuDebug')[0]
21        if val in ('1', 'True'):
22            debugging += 'M'
23        if debugging:
24            import win32traceutil  # pytype: disable=import-error
25    except EnvironmentError:
26        pass
27except (AttributeError, ImportError):    # AttributeError for winreg.* on Unix
28    import os
29    debugging = os.environ.get("DEBUG_THG", "")
30    if debugging.lower() in ("1", "true"):
31        debugging = True
32
33def debugf_No(str, args=None, level=''):
34    pass
35
36if debugging:
37    def debug(level=''):
38        return debugging == True or level in debugging
39    def debugf(str, args=None, level=''):
40        if not debug(level):
41            return
42        if args:
43            print(str % args)
44        elif debug('e') and isinstance(str, BaseException):
45            import traceback
46            traceback.print_exc()
47        else:
48            print(str)
49else:
50    def debug(level=''):
51        return False
52    debugf = debugf_No
53