def METHOD_NAME(self, **options):
    """Return list of components matching parameters."""
    if self.needs_repo:
        base = Component.objects.exclude(repo__startswith="weblate:/")
    else:
        base = Component.objects.all()
    if options["all"]:
        # all components
        result = base
    elif options["file_format"]:
        # all components
        result = base.filter(file_format=options["file_format"])
    elif options["component"]:
        # start with none and add found
        result = Component.objects.none()
        # process arguments
        for arg in options["component"]:
            # do we have also component?
            parts = arg.split("/")
            # filter by project
            found = base.filter(project__slug=parts[0])
            # filter by component if available
            if len(parts) == 2:
                found = found.filter(slug=parts[1])
            # warn on no match
            if not found.exists():
                self.stderr.write(f"{arg!r} did not match any components")
                raise CommandError("Nothing to process!")
            # merge results
            result |= found
    else:
        # no arguments to filter projects
        self.stderr.write("Missing component selection!")
        self.stderr.write(" * Use --all to select all components")
        self.stderr.write(" * Use --file-format to filter based on the file format")
        self.stderr.write(" * Specify at least one <project/component> argument")
        raise CommandError("Nothing to process!")
    return result