def execute()

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)