"""Print links to relevant docs."""
from .model import Info

DATA = {
    "backup": {
        "title": "Backup",
        "docs": "https://developers.home-assistant.io/docs/core/platform/backup",
    },
    "config_flow": {
        "title": "Config Flow",
        "docs": "https://developers.home-assistant.io/docs/en/config_entries_config_flow_handler.html",
    },
    "config_flow_helper": {
        "title": "Helper Config Flow",
        "docs": "https://developers.home-assistant.io/docs/en/config_entries_config_flow_handler.html#helper",
    },
    "config_flow_discovery": {
        "title": "Discoverable Config Flow",
        "docs": "https://developers.home-assistant.io/docs/en/config_entries_config_flow_handler.html#discoverable-integrations-that-require-no-authentication",
    },
    "config_flow_oauth2": {
        "title": "OAuth2 Config Flow",
        "docs": "https://developers.home-assistant.io/docs/en/next/config_entries_config_flow_handler.html#configuration-via-oauth2",
    },
    "device_action": {
        "title": "Device Action",
        "docs": "https://developers.home-assistant.io/docs/en/device_automation_action.html",
    },
    "device_condition": {
        "title": "Device Condition",
        "docs": "https://developers.home-assistant.io/docs/en/device_automation_condition.html",
    },
    "device_trigger": {
        "title": "Device Trigger",
        "docs": "https://developers.home-assistant.io/docs/en/device_automation_trigger.html",
    },
    "integration": {
        "title": "Integration",
        "docs": "https://developers.home-assistant.io/docs/en/creating_integration_file_structure.html",
    },
    "reproduce_state": {
        "title": "Reproduce State",
        "docs": "https://developers.home-assistant.io/docs/core/platform/reproduce_state",
        "extra": "You will now need to update the code to make sure that every attribute that can occur in the state will cause the right service to be called.",
    },
    "significant_change": {
        "title": "Significant Change",
        "docs": "https://developers.home-assistant.io/docs/core/platform/significant_change",
        "extra": "You will now need to update the code to make sure that entities with different device classes are correctly considered.",
    },
}


def print_relevant_docs(template: str, info: Info) -> None:
    """Print relevant docs."""
    data = DATA[template]

    print()
    print("**************************")
    print()
    print()
    print(f"{data['title']} code has been generated")
    print()
    if info.files_added:
        print("Added the following files:")
        for file in info.files_added:
            print(f"- {file}")
        print()

    if info.tests_added:
        print("Added the following tests:")
        for file in info.tests_added:
            print(f"- {file}")
        print()

    if info.examples_added:
        print(
            "Because some files already existed, we added the following example files. Please copy the relevant code to the existing files."
        )
        for file in info.examples_added:
            print(f"- {file}")
        print()

    print(
        "The next step is to look at the files and deal with all areas marked as TODO."
    )

    if "extra" in data:
        print()
        print(data["extra"])