From 7d303f869b9eab74c76542e11647c1ae9ef8ab98 Mon Sep 17 00:00:00 2001 From: Alex Myers Date: Tue, 30 Jul 2024 12:46:17 -0500 Subject: [PATCH] reckless: accept json array arguments as input Changelog-Added: Reckless: accepts json array input for command targets --- tools/reckless | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/reckless b/tools/reckless index aa519414ea43..5ac9f3cb9e06 100755 --- a/tools/reckless +++ b/tools/reckless @@ -1586,6 +1586,18 @@ def report_version() -> str: log.add_result(__VERSION__) +def unpack_json_arg(json_target: str) -> list: + """validate json for any command line targets passes as a json array""" + try: + targets = json.loads(json_target) + except json.decoder.JSONDecodeError: + return None + if isinstance(targets, list): + return targets + log.warning(f'input {target_list} is not a json array') + return None + + class StoreIdempotent(argparse.Action): """Make the option idempotent. This adds a secondary argument that doesn't get reinitialized. The downside is it""" @@ -1755,7 +1767,13 @@ if __name__ == '__main__': args.func(args.targets) sys.exit(0) for target in args.targets: - log.add_result(args.func(target)) + # Accept single item arguments, or a json array + target_list = unpack_json_arg(target) + if target_list: + for tar in target_list: + log.add_result(args.func(tar)) + else: + log.add_result(args.func(target)) elif 'func' in args: log.add_result(args.func())