"""This module defines object specific to Cygwin platform."""

from __future__ import annotations

import sys
import textwrap

from . import abstract
from .abstract import CMakeGenerator


# pylint:disable=abstract-method
class CygwinPlatform(abstract.CMakePlatform):
    """Cygwin implementation of :class:`.abstract.CMakePlatform`."""

    def __init__(self) -> None:
        super().__init__()
        self.default_generators = [CMakeGenerator("Ninja"), CMakeGenerator("Unix Makefiles")]

    @property
    def generator_installation_help(self) -> str:
        """Return message guiding the user for installing a valid toolchain."""

        pyver = "{}.{}".format(*sys.version_info[:2])
        return textwrap.dedent(
            f"""\
            Building Cygwin wheels for Python {pyver} requires Cygwin packages
            ninja or make and compilers from e.g. gcc-core and gcc-g++.
            Get them here:

              https://cygwin.com/packages/package_list.html"""
        )
