add: read args & parse config
This commit is contained in:
68
src/pganec/main.py
Normal file
68
src/pganec/main.py
Normal 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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user