"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: MIT-0
"""

from datetime import datetime

from cfnlint.rules import RuleMatch
from cfnlint.rules.resources.lmbd.DeprecatedRuntime import DeprecatedRuntime


class DeprecatedRuntimeEnd(DeprecatedRuntime):
    """Check if EOL Lambda Function Runtimes are used"""

    id = "E2531"
    shortdesc = "Check if EOL Lambda Function Runtimes are used"
    description = (
        "Check if an EOL Lambda Runtime is specified and give an error if used. "
    )
    source_url = (
        "https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html"
    )
    tags = ["resources", "lambda", "runtime"]

    def check_runtime(self, runtime_value, path):
        """Check if the given runtime is valid"""
        matches = []

        runtime = self.deprecated_runtimes.get(runtime_value)
        if runtime:
            if datetime.strptime(runtime["deprecated"], "%Y-%m-%d") < self.current_date:
                message = "Deprecated runtime ({0}) specified. Updating disabled since {1}. Please consider updating to {2}"
                matches.append(
                    RuleMatch(
                        path,
                        message.format(
                            runtime_value, runtime["deprecated"], runtime["successor"]
                        ),
                    )
                )
        return matches
