This commit is contained in:
66
gitignore_generator/config.py
Normal file
66
gitignore_generator/config.py
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
"""Configuration management for gitignore-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."""
|
||||||
|
if config_path is None:
|
||||||
|
config_path = os.environ.get(
|
||||||
|
"GITIGNORE_CONFIG",
|
||||||
|
str(Path(__file__).parent.parent / ".gitignore-generator" / "config.yaml")
|
||||||
|
)
|
||||||
|
self.config_path = Path(config_path)
|
||||||
|
self._config = self._load_config()
|
||||||
|
|
||||||
|
def _load_config(self) -> dict:
|
||||||
|
"""Load configuration from file."""
|
||||||
|
if self.config_path.exists():
|
||||||
|
with open(self.config_path, "r") as f:
|
||||||
|
return yaml.safe_load(f) or {}
|
||||||
|
return {}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def template_dir(self) -> Path:
|
||||||
|
"""Get template directory path."""
|
||||||
|
env_dir = os.environ.get("TEMPLATE_DIR")
|
||||||
|
if env_dir:
|
||||||
|
return Path(env_dir)
|
||||||
|
config_dir = self._config.get("template_dir")
|
||||||
|
if config_dir:
|
||||||
|
return Path(__file__).parent / config_dir
|
||||||
|
return Path(__file__).parent / "templates"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def default_output(self) -> str:
|
||||||
|
"""Get default output file name."""
|
||||||
|
env_output = os.environ.get("GITIGNORE_DEFAULT_FILE")
|
||||||
|
if env_output:
|
||||||
|
return env_output
|
||||||
|
config_output = self._config.get("default_output")
|
||||||
|
if config_output:
|
||||||
|
return config_output
|
||||||
|
return ".gitignore"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def custom_templates_dir(self) -> Path:
|
||||||
|
"""Get custom templates directory path."""
|
||||||
|
custom_dir = self._config.get("custom_templates_dir", "~/.config/gitignore-generator/templates")
|
||||||
|
return Path(custom_dir).expanduser()
|
||||||
|
|
||||||
|
def get_template_path(self, template_name: str, category: str = "languages") -> Optional[Path]:
|
||||||
|
"""Get the path to a template file."""
|
||||||
|
template_path = self.template_dir / category / f"{template_name}.gitignore"
|
||||||
|
if template_path.exists():
|
||||||
|
return template_path
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
config = Config()
|
||||||
Reference in New Issue
Block a user