izzylib/IzzyLib/misc.py
2020-03-11 18:16:55 -04:00

69 lines
1.8 KiB
Python

'''Miscellaneous functions'''
import random, string, sys, os
from os import environ as env
from datetime import datetime
from os.path import abspath, dirname, basename, isdir, isfile
from . import logging
def boolean(v, fail=True):
if type(v) in [dict, list, tuple]:
raise ValueError(f'Value is not a string, boolean, int, or nonetype: {value}')
'''make the value lowercase if it's a string'''
value = v.lower() if isinstance(v, str) else v
if value in [1, True, 'on', 'y', 'yes', 'true', 'enable']:
'''convert string to True'''
return True
elif value in [0, False, None, 'off', 'n', 'no', 'false', 'disable', '']:
'''convert string to False'''
return False
elif not fail:
'''just return the value'''
return value
else:
raise ValueError(f'Value cannot be converted to a boolean: {value}')
def randomgen(chars=20):
if not isinstance(chars, int):
raise TypeError(f'Character length must be an integer, not a {type(char)}')
return ''.join(random.choices(string.ascii_letters + string.digits, k=chars))
def formatUTC(timestamp=None):
date = datetime.fromtimestamp(timestamp) if timestamp else datetime.utcnow()
return date.strftime('%a, %d %b %Y %H:%M:%S GMT')
def config_dir(modpath=None):
if env.get('CONFDIR'):
'''set the storage path to the environment variable if it exists'''
stor_path = abspath(env['CONFDIR'])
else:
stor_path = f'{os.getcwd()}'
if modpath and not env.get('CONFDIR'):
modname = basename(dirname(modpath))
if isdir(f'{stor_path}/{modname}'):
'''set the storage path to CWD/data if the module or script is in the working dir'''
stor_path += '/data'
if not isdir (stor_path):
os.makedirs(stor_path, exist_ok=True)
return stor_path
def merp():
log = logging.getLogger('merp-heck', {'level': 'merp', 'date': False})
log.merp('heck')