diff --git a/gitignore_generator/config.py b/gitignore_generator/config.py new file mode 100644 index 0000000..167fbbf --- /dev/null +++ b/gitignore_generator/config.py @@ -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()