# # Copyright (c) 2021-2026 ahriman team. # # This file is part of ahriman # (see https://github.com/arcan1s/ahriman). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import argparse from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration from ahriman.models.repository_id import RepositoryId class Reload(Handler): """ web server reload handler """ ALLOW_MULTI_ARCHITECTURE_RUN = False # system-wide action @classmethod def run(cls, args: argparse.Namespace, repository_id: RepositoryId, configuration: Configuration, *, report: bool) -> None: """ callback for command line Args: args(argparse.Namespace): command line args repository_id(RepositoryId): repository unique identifier configuration(Configuration): configuration instance report(bool): force enable or disable reporting """ client = Application(repository_id, configuration, report=True).reporter client.configuration_reload() @staticmethod def _set_web_reload_parser(root: SubParserAction) -> argparse.ArgumentParser: """ add parser for web reload subcommand Args: root(SubParserAction): subparsers for the commands Returns: argparse.ArgumentParser: created argument parser """ parser = root.add_parser("web-reload", help="reload configuration", description="reload web server configuration", epilog="This method forces the web server to reload its configuration. " "Note, however, that this method does not apply all configuration changes " "(like ports, authentication, etc)") parser.set_defaults(architecture="", lock=None, quiet=True, report=False, repository="", unsafe=True) return parser arguments = [_set_web_reload_parser]