doc/.venv/Lib/site-packages/mkdocs_get_deps/__main__.py

62 lines
1.6 KiB
Python

from __future__ import annotations
import argparse
import logging
import sys
from . import get_deps, get_projects_file
parser = argparse.ArgumentParser(
description="Show required PyPI packages inferred from plugins in mkdocs.yml."
)
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose output")
parser.add_argument(
"-f",
"--config-file",
type=argparse.FileType("r"),
help="Provide a specific MkDocs config. This can be a file name, or '-' to read from stdin.",
default=None,
)
parser.add_argument(
"-p",
"--projects-file",
help="URL or local path of the registry file that declares all known MkDocs-related projects.",
default="https://raw.githubusercontent.com/mkdocs/catalog/main/projects.yaml",
)
class CountHandler(logging.NullHandler):
warning_count = 0
def handle(self, record):
rv = self.filter(record)
if rv:
self.warning_count += 1
return rv
def cli():
args = parser.parse_args()
logging.basicConfig(
level=logging.DEBUG if args.verbose else logging.INFO,
format="%(levelname)s - mkdocs-get-deps: %(message)s",
)
warning_counter = CountHandler()
warning_counter.setLevel(logging.WARNING)
logging.getLogger("mkdocs").addHandler(warning_counter)
with get_projects_file(args.projects_file) as projects_file:
deps = get_deps(config_file=args.config_file, projects_file=projects_file)
for dep in deps:
print(dep) # noqa: T201
if warning_counter.warning_count:
sys.exit(1)
if __name__ == "__main__":
cli()