Source code for law.cli.config

# coding: utf-8

"""
"law config" cli subprogram.
"""


from law.config import Config
from law.util import abort


_cfg = Config.instance()


[docs]def setup_parser(sub_parsers): """ Sets up the command line parser for the *config* subprogram and adds it to *sub_parsers*. """ parser = sub_parsers.add_parser( "config", prog="law config", description="Configuration helper to get, set or remove a value from the law configuration " "file ({}).".format(_cfg.config_file), ) parser.add_argument( "name", nargs="?", help="the name of the config in the format <section>[.<option>]; when empty, all section " "names are printed; when no option is given, all section options are printed", ) parser.add_argument( "value", nargs="?", help="the value to set; when empty, the current value is printed", ) parser.add_argument( "--remove", "-r", action="store_true", help="remove the config", ) parser.add_argument( "--expand", "-e", action="store_true", help="expand variables when getting a value", ) parser.add_argument( "--location", "-l", action="store_true", help="print the location of the configuration file and exit", )
[docs]def execute(args): """ Executes the *config* subprogram with parsed commandline *args*. """ cfg = Config.instance() # just print the file location? if args.location: print(cfg.config_file) return # print sections when none is given if not args.name: print("\n".join(cfg.sections())) return # print section options when none is given section, option = args.name.split(".", 1) if "." in args.name else (args.name, None) if not option: print("\n".join(cfg.options(section))) return # removal if args.remove: abort("config removal not yet implemented") # setting if args.value: abort("config setting not yet implemented") # getting print(cfg.get_default(section, option, expand_vars=args.expand, expand_user=args.expand))