From 24930756698d06d4987493008a45aa0f655a04ae Mon Sep 17 00:00:00 2001 From: Joakim Soderlund Date: Wed, 25 Oct 2017 21:39:03 +0200 Subject: [PATCH] Add refetch to update command arguments --- fimfarchive/commands/update.py | 39 +++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/fimfarchive/commands/update.py b/fimfarchive/commands/update.py index db20dfc..b66b1a9 100644 --- a/fimfarchive/commands/update.py +++ b/fimfarchive/commands/update.py @@ -23,13 +23,14 @@ Update command. import traceback -from argparse import ArgumentParser, FileType +from argparse import ArgumentParser, Namespace, FileType from typing import Any, Iterable, Iterator, Optional from jmespath import search -from fimfarchive.fetchers import FimfarchiveFetcher, FimfictionFetcher +from fimfarchive.fetchers import Fetcher, FimfarchiveFetcher, FimfictionFetcher from fimfarchive.flavors import UpdateStatus +from fimfarchive.selectors import Selector, RefetchSelector from fimfarchive.signals import SignalReceiver from fimfarchive.stories import Story from fimfarchive.tasks import UpdateTask @@ -169,7 +170,7 @@ class UpdatePrinter(SignalReceiver): if story: print(StoryFormatter(story)) else: - print("Status: Missing") + print("Action: Missing") def on_failure(self, sender, key, error): """ @@ -202,15 +203,37 @@ class UpdateCommand(Command): metavar='PATH', ) + parser.add_argument( + '--refetch', + help="refetch all available stories", + action='store_true', + ) + return parser + def configure(self, opts: Namespace) -> UpdateTask: + """ + Returns a configured task instance. + + Args: + opts: Parsed command line arguments. + """ + fimfarchive: Fetcher = FimfarchiveFetcher(opts.archive) + fimfiction: Fetcher = FimfictionFetcher() + selector: Optional[Selector] = None + + if opts.refetch: + selector = RefetchSelector() + + return UpdateTask( + fimfarchive=fimfarchive, + fimfiction=fimfiction, + selector=selector, + ) + def __call__(self, *args): opts = self.parser.parse_args(args) - - task = UpdateTask( - fimfarchive=FimfarchiveFetcher(opts.archive), - fimfiction=FimfictionFetcher(), - ) + task = self.configure(opts) with UpdatePrinter(task): task.run()