"""Integrate Betty with `nginx <https://nginx.org/>`_."""
from pathlib import Path
from click import Command
from typing_extensions import override
from betty.app.extension import ConfigurableExtension, UserFacingExtension
from betty.cli import CommandProvider
from betty.extension.nginx.artifact import (
generate_configuration_file,
generate_dockerfile_file,
)
from betty.extension.nginx.cli import _serve
from betty.extension.nginx.config import NginxConfiguration
from betty.extension.nginx.gui import _NginxGuiWidget
from betty.generate import Generator, GenerationContext
from betty.gui import GuiBuilder
from betty.locale import Str, Localizable
[docs]
class Nginx(
ConfigurableExtension[NginxConfiguration],
UserFacingExtension,
Generator,
GuiBuilder,
CommandProvider,
):
"""
Integrate Betty with nginx (and Docker).
"""
[docs]
@override
@classmethod
def description(cls) -> Localizable:
return Str._(
'Generate <a href="">nginx</a> configuration for your site, as well as a <code>Dockerfile</code> to build a <a href="https://www.docker.com/">Docker</a> container around it.'
)
@property
def https(self) -> bool:
"""
Whether the nginx server should use HTTPS.
"""
if self._configuration.https is None:
return self._app.project.configuration.base_url.startswith("https")
return self._configuration.https
@property
def www_directory_path(self) -> str:
"""
The nginx server's public web root directory path.
"""
return self._configuration.www_directory_path or str(
self._app.project.configuration.www_directory_path
)