# bootstrap
import logging
import os
import socket
import sys
from colorsys import hsv_to_rgb
import coloredlogs
try:
import faulthandler
faulthandler.enable()
except ImportError:
pass
if 0:
from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose', color_scheme='Linux', call_pdb=1)
progName = sys.argv[0].split('/')[-1]
log = logging.getLogger() # this has to get the root logger
log.name = progName # but we can rename it for clarity
coloredlogs.install(
level='DEBUG',
milliseconds=True,
datefmt='t=%H:%M:%S',
fmt='%(asctime)s.%(msecs)03d %(levelname)1.1s %(name)s %(message)s',
# try `pdm run humanfriendly --demo`
field_styles=dict(
asctime=dict(color=30),
levelname=dict(color=247),
name=dict(color='blue'),
),
level_styles={
'debug': dict(color=115),
'info': dict(color=250),
'warning': dict(color=208),
'error': dict(color=161),
'critical': dict(color=196),
},
)
def setTerminalTitle(s):
if os.environ.get('TERM', '') in ['xterm', 'rxvt', 'rxvt-unicode-256color']:
print("\033]0;%s\007" % s) # not escaped/protected correctly
hue = (hash(progName) % 255) / 255
r, g, b = [int(x * 255) for x in hsv_to_rgb(hue, s=.2, v=.1)]
print(f"\033]11;#{r:02x}{g:02x}{b:02x}\007")
if 'listsongs' not in sys.argv[0] and 'homepageConfig' not in sys.argv[0]:
setTerminalTitle('[%s] %s' % (socket.gethostname(), ' '.join(sys.argv).replace('bin/', '')))
# see http://www.youtube.com/watch?v=3cIOT9kM--g for commands that make
# profiles and set background images