from typing import ClassVar

from .base import OptimizerBase

__all__ = ["Cwebp"]


class Cwebp(OptimizerBase):
    """https://developers.google.com/speed/webp/docs/cwebp"""

    library_name: ClassVar[str] = "cwebp"
    image_format: ClassVar[str] = "webp"

    @classmethod
    def get_check_library_arguments(cls) -> list[str]:
        # running just cwebp gives basic infor and returns a zero exit code
        return []

    @classmethod
    def get_command_arguments(
        cls, file_path: str, progressive: bool = False
    ) -> list[str]:
        return [
            "-m",
            "6",  # inspect all encoding possibilities for best file size
            "-mt",  # use multithreading if possible
            "-pass",
            "10",  # max number of passes
            "-q",
            "75",  # compression factor. 100 produces the highest quality.
            file_path,
            "-o",
            file_path,
        ]
