Initial gradle-mirror CLI project
This commit is contained in:
50
gradle_mirror/utils.py
Normal file
50
gradle_mirror/utils.py
Normal file
@@ -0,0 +1,50 @@
|
||||
"""General utility helpers for file operations and logging."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
from .constants import APP_NAME, LOG_FILE_NAME
|
||||
|
||||
|
||||
def setup_logger(gradle_home: Path) -> logging.Logger:
|
||||
"""Configure and return the application logger.
|
||||
|
||||
Logs are written to ``<gradle_home>/gradle-mirror.log`` and include timestamps.
|
||||
"""
|
||||
|
||||
gradle_home.mkdir(parents=True, exist_ok=True)
|
||||
log_path = gradle_home / LOG_FILE_NAME
|
||||
|
||||
logger = logging.getLogger(APP_NAME)
|
||||
if logger.handlers:
|
||||
return logger
|
||||
|
||||
logger.setLevel(logging.INFO)
|
||||
formatter = logging.Formatter(
|
||||
fmt="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S",
|
||||
)
|
||||
|
||||
file_handler = logging.FileHandler(log_path, encoding="utf-8")
|
||||
file_handler.setFormatter(formatter)
|
||||
|
||||
logger.addHandler(file_handler)
|
||||
logger.propagate = False
|
||||
return logger
|
||||
|
||||
|
||||
def read_text_if_exists(path: Path) -> str:
|
||||
"""Read UTF-8 text if file exists; otherwise return empty string."""
|
||||
|
||||
if not path.exists():
|
||||
return ""
|
||||
return path.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def write_text(path: Path, content: str) -> None:
|
||||
"""Write UTF-8 text content, creating parent folders if needed."""
|
||||
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text(content, encoding="utf-8")
|
||||
Reference in New Issue
Block a user