allow loading config files in TOML format with --config-toml

This commit is contained in:
Mike Fährmann
2023-02-28 21:54:46 +01:00
parent 9e870eb930
commit 632d5d7745
4 changed files with 35 additions and 14 deletions

View File

@@ -72,9 +72,11 @@
--no-check-certificate Disable HTTPS certificate validation --no-check-certificate Disable HTTPS certificate validation
## Configuration Options: ## Configuration Options:
-o, --option KEY=VALUE Additional options. Example: -o browser=firefox
-c, --config FILE Additional configuration files -c, --config FILE Additional configuration files
-o, --option OPT Additional '<key>=<value>' option values --config-yaml FILE Additional configuration files in YAML format
--ignore-config Do not read default configuration files --config-toml FILE Additional configuration files in TOML format
--config-ignore Do not read default configuration files
## Authentication Options: ## Authentication Options:
-u, --username USER Username to login with -u, --username USER Username to login with

View File

@@ -40,10 +40,12 @@ def main():
# configuration # configuration
if args.load_config: if args.load_config:
config.load() config.load()
if args.cfgfiles: if args.configs_json:
config.load(args.cfgfiles, strict=True) config.load(args.configs_json, strict=True)
if args.yamlfiles: if args.configs_yaml:
config.load(args.yamlfiles, strict=True, fmt="yaml") config.load(args.configs_yaml, strict=True, fmt="yaml")
if args.configs_toml:
config.load(args.configs_toml, strict=True, fmt="toml")
if args.filename: if args.filename:
filename = args.filename filename = args.filename
if filename == "/O": if filename == "/O":

View File

@@ -58,6 +58,17 @@ def load(files=None, strict=False, fmt="json"):
except ImportError: except ImportError:
log.error("Could not import 'yaml' module") log.error("Could not import 'yaml' module")
return return
elif fmt == "toml":
try:
import tomllib
load = tomllib.loads
except ImportError:
try:
import toml
load = toml.loads
except ImportError:
log.error("Could not import 'toml' module")
return
else: else:
load = util.json_loads load = util.json_loads

View File

@@ -320,15 +320,26 @@ def build_parser():
) )
configuration = parser.add_argument_group("Configuration Options") configuration = parser.add_argument_group("Configuration Options")
configuration.add_argument(
"-o", "--option",
dest="options", metavar="KEY=VALUE", action=ParseAction, default=[],
help=("Additional options. "
"Example: -o browser=firefox") ,
)
configuration.add_argument( configuration.add_argument(
"-c", "--config", "-c", "--config",
dest="cfgfiles", metavar="FILE", action="append", dest="configs_json", metavar="FILE", action="append",
help="Additional configuration files", help="Additional configuration files",
) )
configuration.add_argument( configuration.add_argument(
"--config-yaml", "--config-yaml",
dest="yamlfiles", metavar="FILE", action="append", dest="configs_yaml", metavar="FILE", action="append",
help=argparse.SUPPRESS, help="Additional configuration files in YAML format",
)
configuration.add_argument(
"--config-toml",
dest="configs_toml", metavar="FILE", action="append",
help="Additional configuration files in TOML format",
) )
configuration.add_argument( configuration.add_argument(
"--config-ignore", "--config-ignore",
@@ -340,11 +351,6 @@ def build_parser():
dest="load_config", action="store_false", dest="load_config", action="store_false",
help=argparse.SUPPRESS, help=argparse.SUPPRESS,
) )
configuration.add_argument(
"-o", "--option",
dest="options", metavar="OPT", action=ParseAction, default=[],
help="Additional '<key>=<value>' option values",
)
authentication = parser.add_argument_group("Authentication Options") authentication = parser.add_argument_group("Authentication Options")
authentication.add_argument( authentication.add_argument(