Source code for golosscripts.decorators
import logging
from functools import update_wrapper, wraps
import click
import yaml
from .golos_helper import GolosHelper
[docs]log = logging.getLogger('golosscripts')
[docs]def common_options(func):
@click.option('-d', '--debug', default=False, is_flag=True, help='enable debug output')
@click.option(
'-c', '--config', type=click.File('r'), default='./common.yml', help='specify custom path for config file'
)
@click.pass_context
@wraps(func)
def wrapper(ctx, *args, **kwargs):
ctx.config = yaml.safe_load(kwargs.pop("config"))
# create logger
debug = kwargs.pop("debug")
ctx.debug = debug
if debug is True:
log.setLevel(logging.DEBUG)
else:
log.setLevel(logging.INFO)
handler = logging.StreamHandler()
formatter = logging.Formatter("%(asctime)s %(levelname)s: %(message)s")
handler.setFormatter(formatter)
log.addHandler(handler)
ctx.log = log
return func(*args, **kwargs)
return wrapper
[docs]def helper(func):
@click.pass_context
def new_func(ctx, *args, **kwargs):
ctx.helper = GolosHelper(nodes=ctx.config['nodes'], keys=ctx.config['keys'], expiration=60)
return ctx.invoke(func, *args, **kwargs)
return update_wrapper(new_func, func)