import http.server
import os
import socketserver
import sys

# Порт, на котором будет висеть репозиторий внутри контейнера
PORT = 8080
# Путь к репозиторию (точка — текущая папка)
DIRECTORY = "."


class DebrandingServer(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        # Устанавливаем рабочую директорию для сервера
        super().__init__(*args, directory=DIRECTORY, **kwargs)

    def log_message(self, format, *args):
        # Перенаправляем логи сервера в stdout, чтобы их было видно в docker logs
        sys.stderr.write(
            "%s - - [%s] %s\n"
            % (self.address_string(), self.log_date_time_string(), format % args)
        )


if __name__ == "__main__":
    # Переходим в директорию проекта на всякий случай
    os.chdir(os.path.dirname(os.path.abspath(__file__)))

    # Позволяем повторное использование порта сразу после перезапуска
    socketserver.TCPServer.allow_reuse_address = True

    with socketserver.TCPServer(("", PORT), DebrandingServer) as httpd:
        print(f"--- Репозиторий раздается на порту {PORT} ---")
        print(f"--- Рабочая директория: {os.getcwd()} ---")
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\nОстановка сервера...")
            httpd.server_close()
