Source code for erc7730.list.list

from collections.abc import Generator
from pathlib import Path

from rich import print

from erc7730 import ERC_7730_REGISTRY_CALLDATA_PREFIX, ERC_7730_REGISTRY_EIP712_PREFIX
from erc7730.common.output import (
    ConsoleOutputAdder,
    OutputAdder,
)


[docs] def list_all(paths: list[Path]) -> bool: """ List all ERC-7730 descriptor files at given paths. Paths can be files or directories, in which case all descriptor files in the directory are recursively listed. :param paths: paths to search for descriptor files :return: true if no error occurred """ out = ConsoleOutputAdder() for file in get_erc7730_files(*paths, out=out): print(file) return not out.has_errors
[docs] def get_erc7730_files(*paths: Path, out: OutputAdder) -> Generator[Path, None, None]: """ List all ERC-7730 descriptor files at given paths. Paths can be files or directories, in which case all descriptor files in the directory are recursively listed. :param paths: paths to search for descriptor files :param out: error handler """ for path in paths: if path.is_file(): if is_erc7730_file(path): yield path else: out.error(title="Invalid path", message=f"{path} is not an ERC-7730 descriptor file") elif path.is_dir(): for file in path.rglob("*.json"): if is_erc7730_file(file): yield file else: out.error(title="Invalid path", message=f"{path} is not a file or directory")
[docs] def is_erc7730_file(path: Path) -> bool: """ Check if a file is an ERC-7730 descriptor file. :param path: file path :return: true if the file is an ERC-7730 descriptor file """ return path.is_file() and ( path.name.startswith(ERC_7730_REGISTRY_CALLDATA_PREFIX) or path.name.startswith(ERC_7730_REGISTRY_EIP712_PREFIX) )