Source code for bdb_transaction_cli.utils

import json

import click


[docs]class JsonOrNoneParamType(click.ParamType): """ A Click parameter class that loads JSON """ name = 'JSON'
[docs] def convert(self, value, param, ctx): # No try-except in case `value is None`, as it is a valid value. # Still we want `json.loads` to visibly fail. if value is None: return value return json.loads(value)
[docs]def json_argument(*args, **kwargs): """ Decorator for a JSON command line argument """ kwargs['type'] = JsonOrNoneParamType() return click.argument(*args, **kwargs)
[docs]def json_option(*args, **kwargs): """ Decorator for a JSON command line option """ kwargs['type'] = JsonOrNoneParamType() return click.option(*args, **kwargs)
[docs]def listify(obj): """ Wrap something in a list, if it's not already a list """ return obj if isinstance(obj, list) else [obj]