Implement user-config
This commit is contained in:
parent
759d7d77f9
commit
b041d5d784
@ -79,7 +79,11 @@ def get_parser(valid_commands):
|
||||
parser.add_argument("-n",
|
||||
metavar="LEXICON",
|
||||
dest="lexicon",
|
||||
help="The name of the lexicon to operate on")
|
||||
help="Specify a lexicon to operate on")
|
||||
parser.add_argument("-u",
|
||||
metavar="USERNAME",
|
||||
dest="username",
|
||||
help="Specify a user to operate on")
|
||||
parser.set_defaults(func=lambda args: repl(args) if args.lexicon else parser.print_help())
|
||||
subp = parser.add_subparsers(
|
||||
metavar="COMMAND",
|
||||
|
@ -43,7 +43,8 @@ def requires(argument, verify=lambda a: a is not None):
|
||||
config.logger.error(
|
||||
"This command requires specifying {}".format(argument))
|
||||
return -1
|
||||
command(cmd_args)
|
||||
if type(cmd_args) is not ArgumentParser or second_layer:
|
||||
command(cmd_args)
|
||||
augmented_command.__dict__['wrapper'] = True
|
||||
return augmented_command
|
||||
return req_checker
|
||||
@ -79,13 +80,16 @@ def config_set(cfg, set_tuple):
|
||||
config is from a with json_rw context
|
||||
set_tuple is a tuple of the pathspec and the value
|
||||
"""
|
||||
import json
|
||||
from config import logger
|
||||
pathspec, value = set_tuple
|
||||
if not pathspec:
|
||||
logger.error("Path must be non-empty")
|
||||
path = pathspec.split('.')
|
||||
if not value:
|
||||
value = None
|
||||
try:
|
||||
value = json.loads(value)
|
||||
except:
|
||||
pass # Leave value as string
|
||||
for spec in path[:-1]:
|
||||
if spec not in cfg:
|
||||
logger.error("Path not found")
|
||||
|
@ -1,4 +1,4 @@
|
||||
from cli.helpers import add_argument, no_argument
|
||||
from cli.helpers import add_argument, no_argument, requires, config_get, config_set, CONFIG_GET_ROOT_VALUE
|
||||
|
||||
@add_argument("--username", help="User's login handle")
|
||||
@add_argument("--displayname", help="User's publicly displayed name")
|
||||
@ -71,12 +71,35 @@ def command_list(args):
|
||||
for user in users:
|
||||
print("{0} {1} ({2})".format(user['uid'], user['displayname'], user['username']))
|
||||
|
||||
@no_argument
|
||||
@add_argument("--get", metavar="PATHSPEC", dest="get",
|
||||
nargs="?", const=CONFIG_GET_ROOT_VALUE, help="Get the value of a config key")
|
||||
@add_argument("--set", metavar=("PATHSPEC", "VALUE"), dest="set",
|
||||
nargs=2, help="Set the value of a config key")
|
||||
@requires("username")
|
||||
def command_config(args):
|
||||
"""
|
||||
Interact with a user's config
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
import json
|
||||
import config
|
||||
import user
|
||||
|
||||
if args.get and args.set:
|
||||
config.logger.error("Specify one of --get and --set")
|
||||
return -1
|
||||
|
||||
uid = user.uid_from_username(args.username)
|
||||
if not uid:
|
||||
config.logger.error("User not found")
|
||||
return -1
|
||||
|
||||
if args.get:
|
||||
with config.json_ro('user', uid, 'config.json') as cfg:
|
||||
config_get(cfg, args.get)
|
||||
|
||||
if args.set:
|
||||
with config.json_rw('user', uid, 'config.json') as cfg:
|
||||
config_set(cfg, args.set)
|
||||
|
||||
@add_argument("--username", help="The user to change password for")
|
||||
def command_passwd(args):
|
||||
|
Loading…
Reference in New Issue
Block a user