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

from cfnlint.rules import CloudFormationLintRule, RuleMatch


class Description(CloudFormationLintRule):
    """Check if Outputs Descriptions are only string values"""

    id = "E6005"
    shortdesc = "Outputs descriptions can only be strings"
    description = "Outputs descriptions can only be strings"
    source_url = "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html"
    tags = ["outputs"]

    def match(self, cfn):
        matches = []

        outputs = cfn.get_outputs_valid()
        if outputs:
            for output_name, output_value in outputs.items():
                description = output_value.get("Description")
                if description:
                    if not isinstance(description, str):
                        message = "Output Description can only be a string"
                        matches.append(
                            RuleMatch(["Outputs", output_name, "Description"], message)
                        )

        return matches
