in python-threatexchange/threatexchange/cli/fetch_cmd.py [0:0]
def execute(self, settings: CLISettings) -> None:
fetchers = settings.get_fetchers()
# Verify collab arguments
self.collabs = settings.get_all_collabs(default_to_sample=True)
if self.only_collab:
self.collabs = [c for c in self.collabs if c.name == self.only_collab]
if not self.collabs:
raise command_base.CommandError(
f"No such collab '{self.only_collab}'", 2
)
if all(not c.enabled for c in self.collabs):
self.stderr("All collabs are disabled. Nothing to do.")
return
# Do work
if self.clear:
self.stderr("Clearing fetched state")
for fetcher in settings.get_fetchers():
store = settings.get_fetch_store_for_fetcher(fetcher)
for collab in self.collabs:
if self.only_collab not in (None, collab.name):
continue
logging.info("Clearing %s - %s", fetcher.get_name(), collab.name)
store.clear(collab)
return
all_succeeded = True
any_succeded = False
for fetcher in fetchers:
logging.info("Fetching all %s's configs", fetcher.get_name())
succeeded = self.execute_for_fetcher(settings, fetcher)
all_succeeded &= succeeded
any_succeded |= succeeded
if any_succeded and not self.skip_index_rebuild:
self.stderr("Rebuilding match indices...")
DatasetCommand().execute_generate_indices(settings)
if not all_succeeded:
raise command_base.CommandError("Some collabs had errors!", 3)