CLean up server cli commands
This commit is contained in:
parent
850d07b171
commit
f7611bb79b
|
@ -1,13 +1,21 @@
|
|||
import logging
|
||||
import os
|
||||
|
||||
from amanuensis.config import RootConfigDirectoryContext
|
||||
from amanuensis.cli.helpers import (
|
||||
add_argument, no_argument, alias,
|
||||
config_get, config_set, CONFIG_GET_ROOT_VALUE)
|
||||
add_argument,
|
||||
no_argument,
|
||||
alias,
|
||||
config_get,
|
||||
config_set,
|
||||
CONFIG_GET_ROOT_VALUE)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@alias('i')
|
||||
@add_argument(
|
||||
"--refresh", action="store_true",
|
||||
@add_argument("--refresh",
|
||||
action="store_true",
|
||||
help="Refresh an existing config directory")
|
||||
def command_init(args):
|
||||
"""
|
||||
|
@ -29,6 +37,7 @@ def command_init(args):
|
|||
|
||||
# Internal call
|
||||
create_config_dir(args.config_dir, args.refresh)
|
||||
logger.info(f'Initialized config dir at {args.config_dir}')
|
||||
return 0
|
||||
|
||||
|
||||
|
@ -41,12 +50,10 @@ def command_generate_secret(args):
|
|||
The Flask server will not run unless a secret key has
|
||||
been generated.
|
||||
"""
|
||||
# Module imports
|
||||
from amanuensis.config import json_rw, logger
|
||||
|
||||
secret_key = os.urandom(32)
|
||||
with json_rw("config.json") as cfg:
|
||||
cfg['secret_key'] = secret_key.hex()
|
||||
root: RootConfigDirectoryContext = args.root
|
||||
secret_key: bytes = os.urandom(32)
|
||||
with root.config(edit=True) as cfg:
|
||||
cfg.secret_key = secret_key.hex()
|
||||
logger.info("Regenerated Flask secret key")
|
||||
return 0
|
||||
|
||||
|
@ -74,10 +81,17 @@ def command_run(args):
|
|||
|
||||
|
||||
@alias('n')
|
||||
@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")
|
||||
@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")
|
||||
def command_config(args):
|
||||
"""
|
||||
Interact with the global config
|
||||
|
@ -85,19 +99,18 @@ def command_config(args):
|
|||
PATHSPEC is a path into the config object formatted as
|
||||
a dot-separated sequence of keys.
|
||||
"""
|
||||
# Module imports
|
||||
from amanuensis.config import json_ro, json_rw, logger
|
||||
root: RootConfigDirectoryContext = args.root
|
||||
|
||||
if args.get and args.set:
|
||||
logger.error("Specify one of --get and --set")
|
||||
return -1
|
||||
|
||||
if args.get:
|
||||
with json_ro('config.json') as cfg:
|
||||
with root.config(edit=False) as cfg:
|
||||
config_get(cfg, args.get)
|
||||
|
||||
if args.set:
|
||||
with json_rw('config.json') as cfg:
|
||||
with root.config(edit=True) as cfg:
|
||||
config_set("config", cfg, args.set)
|
||||
|
||||
return 0
|
||||
|
|
|
@ -123,7 +123,7 @@ class IndexDirectoryContext(ConfigDirectoryContext):
|
|||
return self.read('index')
|
||||
|
||||
|
||||
class RootConfigDirectoryContext(ConfigDirectoryContext):
|
||||
class RootConfigDirectoryContext(ConfigFileConfigDirectoryContext):
|
||||
"""
|
||||
Context for the config directory with links to the lexicon and
|
||||
user contexts.
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# Standard library imports
|
||||
import copy
|
||||
from collections import OrderedDict
|
||||
import fcntl
|
||||
import json
|
||||
import logging.config
|
||||
import os
|
||||
import shutil
|
||||
|
||||
# Module imports
|
||||
from amanuensis.errors import MissingConfigError, MalformedConfigError
|
||||
from amanuensis.config.loader import json_ro, json_rw
|
||||
# from amanuensis.errors import MissingConfigError, MalformedConfigError
|
||||
from amanuensis.config.context import json_ro, json_rw
|
||||
from amanuensis.resources import get_stream
|
||||
|
||||
|
||||
|
@ -15,8 +15,6 @@ def create_config_dir(config_dir, refresh=False):
|
|||
"""
|
||||
Create or refresh a config directory
|
||||
"""
|
||||
from collections import OrderedDict
|
||||
import fcntl
|
||||
|
||||
def prepend(*path):
|
||||
joined = os.path.join(*path)
|
||||
|
@ -38,7 +36,7 @@ def create_config_dir(config_dir, refresh=False):
|
|||
global_config_path = prepend("config.json")
|
||||
if refresh and os.path.isfile(global_config_path):
|
||||
# We need to write an entirely different ordereddict to the config
|
||||
# file, so we mimic the config.loader functionality manually.
|
||||
# file, so we mimic the config.context functionality manually.
|
||||
with open(global_config_path, 'r+', encoding='utf8') as cfg_file:
|
||||
fcntl.lockf(cfg_file, fcntl.LOCK_EX)
|
||||
old_cfg = json.load(cfg_file, object_pairs_hook=OrderedDict)
|
||||
|
@ -60,11 +58,6 @@ def create_config_dir(config_dir, refresh=False):
|
|||
with open(prepend("config.json"), 'wb') as f:
|
||||
f.write(def_cfg.read())
|
||||
|
||||
# Ensure pidfile exists.
|
||||
if not os.path.isfile(prepend("pid")):
|
||||
with open(prepend("pid"), 'w') as f:
|
||||
f.write(str(os.getpid()))
|
||||
|
||||
# Ensure lexicon subdir exists.
|
||||
if not os.path.isdir(prepend("lexicon")):
|
||||
os.mkdir(prepend("lexicon"))
|
||||
|
@ -101,4 +94,3 @@ def create_config_dir(config_dir, refresh=False):
|
|||
print("Removing stale {} index entry '{}: {}'"
|
||||
.format(dir_name, name, entry))
|
||||
del index[name]
|
||||
|
||||
|
|
Loading…
Reference in New Issue