# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os
from typing import List

# The base names that are known to be Chromium metadata files.
_METADATA_FILES = {
    "README.chromium",
}


def is_metadata_file(path: str) -> bool:
    """Filter for metadata files."""
    return os.path.basename(path) in _METADATA_FILES


def find_metadata_files(root: str) -> List[str]:
    """Finds all metadata files within the given root directory,
    including subdirectories.

    Args:
      root: the absolute path to the root directory within which to
            search.

    Returns: the absolute full paths for all the metadata files within
             the root directory, sorted in ascending order.
    """
    metadata_files = []

    for dirpath, _, filenames in os.walk(root, followlinks=True):
        for filename in filenames:
            if is_metadata_file(filename):
                full_path = os.path.join(root, dirpath, filename)
                metadata_files.append(full_path)

    return sorted(metadata_files)
