from __future__ import annotations # noqa: D100
from asyncio import gather, to_thread
from contextlib import suppress
from shutil import rmtree
from typing import TYPE_CHECKING, Self, final
from typing_extensions import override
from betty.app.factory import AppDependentFactory
from betty.cli.commands import Command, command, project_option
from betty.locale.localizable import _
from betty.plugin import ShorthandPluginBase
if TYPE_CHECKING:
from pathlib import Path
import asyncclick as click
from betty.app import App
from betty.project import Project
def _rmtree_if_exists(path: Path) -> None:
with suppress(FileNotFoundError):
rmtree(path)
[docs]
@final
class Generate(ShorthandPluginBase, AppDependentFactory, Command):
"""
A command to generate a new site.
"""
_plugin_id = "generate"
_plugin_label = _("Generate a static site")