From b6d198aed3fa17ac28aa62c9679ec2c33dc0a3da Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 4 May 2018 15:35:44 +0200 Subject: Share recursive argument parser --- crocoite/cli.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'crocoite/cli.py') diff --git a/crocoite/cli.py b/crocoite/cli.py index efd30ad..f6454da 100644 --- a/crocoite/cli.py +++ b/crocoite/cli.py @@ -29,6 +29,16 @@ from .controller import RecursiveController, defaultSettings, \ ControllerSettings, DepthLimit, PrefixLimit from .browser import NullService, ChromeService +def parseRecursive (recursive, url): + if recursive is None: + return DepthLimit (0) + elif recursive.isdigit (): + return DepthLimit (int (recursive)) + elif recursive == 'prefix': + return PrefixLimit (url) + else: + raise ValueError ('Unsupported') + def main (): parser = argparse.ArgumentParser(description='Save website to WARC using Google Chrome.') parser.add_argument('--browser', help='DevTools URL', metavar='URL') @@ -63,13 +73,9 @@ def main (): else: logging.basicConfig (level=logging.INFO) - if args.recursive is None: - recursionPolicy = DepthLimit (0) - elif args.recursive.isdigit (): - recursionPolicy = DepthLimit (int (args.recursive)) - elif args.recursive == 'prefix': - recursionPolicy = PrefixLimit (args.url) - else: + try: + recursionPolicy = parseRecursive (args.recursive, args.url) + except ValueError: parser.error ('Invalid argument for --recursive') service = ChromeService () if args.browser: -- cgit v1.2.3