Skip to content

Commit

Permalink
try to make CLI params parser better
Browse files Browse the repository at this point in the history
  • Loading branch information
mara004 committed Nov 20, 2022
1 parent f679f1f commit ac90495
Showing 1 changed file with 24 additions and 15 deletions.
39 changes: 24 additions & 15 deletions src/sla2pdf/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# SPDX-FileCopyrightText: 2022 geisserml <geisserml@gmail.com>
# SPDX-License-Identifier: MPL-2.0

import ast
import logging
import argparse
from sla2pdf.runner import convert
Expand Down Expand Up @@ -54,14 +55,27 @@ def parse_args():
return parser.parse_args()


def _parse_value(value):
value = value.strip()
if value.isnumeric():
return int(value)
elif value.lower() in ("true", "false"):
return bool(value.lower().capitalize())
elif value[0] == "[" and value[-1] == "]":
return [_parse_value(v) for v in value[1:-1].split(",")]
def _parse_params(params_list):

params_dict = {}

for param in params_list:

key, value = param.split("=", maxsplit=1)
key, value = key.strip(), value.strip()

if value.isnumeric():
value = int(value)
elif value.lower() in ("true", "false"):
value = bool(value.lower().capitalize())
elif value.isalnum():
pass
else:
value = ast.literal_eval(value)

params_dict[key] = value

return params_dict


def main():
Expand All @@ -70,14 +84,9 @@ def main():
logger.setLevel(logging.DEBUG)

args = parse_args()
params = _parse_params(args.params)
# print(params)

# TODO consider just parsing with ast.literal_eval() instead?
params = {}
for param in args.params:
key, value = param.split("=", maxsplit=1)
key = key.strip()
params[key] = _parse_value(value)

convert(
args.inputs, args.outputs,
hide_gui = not args.show_gui,
Expand Down

0 comments on commit ac90495

Please sign in to comment.