69 lines
3.4 KiB
Python
69 lines
3.4 KiB
Python
# -*- coding: utf-8 -*-
|
||
import argparse
|
||
import logging
|
||
import sys
|
||
from config import load_config, ConfigError, ConfigNotFoundError, InvalidConfigFormatError
|
||
|
||
# --- Настройки и инициирование логирования ---
|
||
logger = logging.getLogger(__name__)
|
||
|
||
def print_hi(name):
|
||
# Use a breakpoint in the code line below to debug your script.
|
||
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
|
||
|
||
|
||
# Press the green button in the gutter to run the script.
|
||
if __name__ == '__main__':
|
||
parser = argparse.ArgumentParser(description="PGanec — TUI резервного копирования и восстановления баз PostgreSQL")
|
||
parser.add_argument("-c", "--config", required=True,
|
||
help="Путь к файлу конфигурации (YAML)")
|
||
parser.add_argument("-d", "--debug-level", default="QUIET",
|
||
help="Уровень отладки (QUIET, NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL)")
|
||
parser.add_argument("-l", "--loging", default="",
|
||
help="Путь к файлу логирования (если не указан, логирование не будет вестись)")
|
||
|
||
args = parser.parse_args()
|
||
|
||
# Настройка отладочных логов
|
||
level_input_str = args.debug_level.upper()
|
||
chosen_log_level = None
|
||
if level_input_str == "QUIET": # Опция "QUIET"
|
||
chosen_log_level = logging.CRITICAL + 1
|
||
else:
|
||
chosen_log_level = getattr(logging, level_input_str, None)
|
||
if chosen_log_level is None:
|
||
logger.warning(f"Неизвестный уровень отладки '{args.debug_level}'. Используется DEBUG.")
|
||
chosen_log_level = logging.DEBUG
|
||
|
||
logging.basicConfig(
|
||
level=chosen_log_level,
|
||
format="%(asctime)s - %(name)s - %(levelname)s - %(module)s.%(funcName)s:%(lineno)d - %(message)s"
|
||
)
|
||
logger.debug(f"Параметрами: {args}")
|
||
logger.debug(f"Уровень: {chosen_log_level}")
|
||
|
||
# Загрузка конфигурации
|
||
try:
|
||
config = load_config(args.config)
|
||
logger.info(f"Конфигурация успешно загружена: {config}")
|
||
except ConfigNotFoundError:
|
||
print(f"Ошибка: Файл конфигурации '{args.config}' не найден.", file=sys.stderr)
|
||
# Возможно сюда стоит добавить TUI интерфейс для ввода (выбора) файла конфигурации...
|
||
# Но так как ошибка может быть связана с правами доступа (например, TUI запущен от неправильного
|
||
# пользователя), оставим идею "на-подумать", а пока просто завершим выполнение программы.
|
||
sys.exit(1)
|
||
except InvalidConfigFormatError as e:
|
||
print(f"Ошибка: Файл конфигурации '{args.config}' имеет неверный формат. {e}", file=sys.stderr)
|
||
sys.exit(1)
|
||
except ConfigError as e: # Общая ошибка конфигурации (должна быть последней в цепочке)
|
||
print(f"Ошибка при загрузке конфигурации: {e}", file=sys.stderr)
|
||
|
||
sys.exit(1)
|
||
|
||
print_hi('PyCharm')
|
||
|
||
# with open("config.yaml", "r") as f:
|
||
# config = yaml.safe_load(f)
|
||
|
||
|