def main()

in scripts/interface_privacy.py [0:0]


def main() -> None:
    """Main entry point for the script."""
    quiet = sys.argv[2:3] == ["--quiet"]
    argc = len(sys.argv)
    match (argc, quiet):
        case (2, False):
            ...
        case (3, True):
            ...
        case _:
            print(f"Usage: {sys.argv[0]} <filename.py> [ --quiet ]", file=sys.stderr)
            sys.exit(ExitCode.USAGE_ERROR)

    file_path = pathlib.Path(sys.argv[1])
    filename = str(file_path)

    if not file_path.is_file() or (not filename.endswith(".py")):
        print(f"!! {filename} - invalid file", file=sys.stderr)
        sys.exit(ExitCode.USAGE_ERROR)

    content = _read_file_content(file_path)
    if content is None:
        sys.exit(ExitCode.FAILURE)

    tree = _parse_python_code(content, filename)
    if tree is None:
        sys.exit(ExitCode.FAILURE)

    visitor = PrivateAccessVisitor(filename)
    visitor.visit(tree)

    if visitor.violations:
        # print(f"!! {filename} - found violations of private attribute access")
        for lineno, col, name in visitor.violations:
            print(f"!! {filename}:{lineno}:{col} - access to {name}")
        sys.exit(ExitCode.FAILURE)
    else:
        if not quiet:
            print(f"ok {filename}")
        sys.exit(ExitCode.SUCCESS)