Initial upload with CI/CD workflow
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-04 17:54:27 +00:00
parent 8cf74984d9
commit 72d45f5884

View File

@@ -0,0 +1,109 @@
"""Configuration management for git-commit-message-generator."""
import os
from pathlib import Path
from typing import Optional
import yaml
class Config:
"""Configuration management class."""
def __init__(self, config_path: Optional[str] = None):
"""Initialize configuration.
Args:
config_path: Path to config file. Defaults to None.
"""
self.config_path = config_path or os.environ.get(
"GIT_COMMIT_GENERATOR_CONFIG"
)
self._config = self._load_config()
def _load_config(self) -> dict:
"""Load configuration from file.
Returns:
Dictionary containing configuration.
"""
config = {
"ollama_host": os.environ.get("OLLAMA_HOST", "http://localhost:11434"),
"ollama_model": os.environ.get("OLLAMA_MODEL", "llama3"),
"prompt_dir": os.environ.get(
"PROMPT_DIR", str(Path(__file__).parent.parent / "prompts")
),
}
if self.config_path:
config_file = Path(self.config_path)
if config_file.exists():
with open(config_file, "r") as f:
file_config = yaml.safe_load(f) or {}
config.update(file_config)
return config
@property
def ollama_host(self) -> str:
"""Get Ollama host URL.
Returns:
Ollama host URL.
"""
return self._config["ollama_host"]
@property
def ollama_model(self) -> str:
"""Get default Ollama model.
Returns:
Ollama model name.
"""
return self._config["ollama_model"]
@property
def prompt_dir(self) -> str:
"""Get prompt directory path.
Returns:
Path to prompt templates directory.
"""
return self._config["prompt_dir"]
def get_prompt_path(self, prompt_name: str) -> Path:
"""Get full path to a prompt file.
Args:
prompt_name: Name of the prompt file.
Returns:
Full path to the prompt file.
"""
return Path(self.prompt_dir) / prompt_name
def read_prompt(self, prompt_name: str) -> str:
"""Read a prompt template file.
Args:
prompt_name: Name of the prompt file.
Returns:
Content of the prompt file.
"""
prompt_path = self.get_prompt_path(prompt_name)
if prompt_path.exists():
with open(prompt_path, "r") as f:
return f.read()
return ""
def get_config(config_path: Optional[str] = None) -> Config:
"""Get configuration instance.
Args:
config_path: Optional path to config file.
Returns:
Config instance.
"""
return Config(config_path)