add: read args & parse config

This commit is contained in:
2025-06-05 23:53:17 +03:00
parent 327e0a55e9
commit 4a81ed04a0
4 changed files with 173 additions and 0 deletions

68
src/pganec/main.py Normal file
View File

@@ -0,0 +1,68 @@
# -*- 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)