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

This commit is contained in:
2026-02-02 18:27:14 +00:00
parent 14ac93f22b
commit 5d6c01affe

51
src/config.py Normal file
View File

@@ -0,0 +1,51 @@
"""Configuration management for Code Pattern Search CLI."""
import os
from pathlib import Path
from typing import Optional
from dataclasses import dataclass
@dataclass
class Config:
"""Configuration settings for the CLI."""
cache_dir: Optional[Path] = None
cache_ttl: int = 3600
token: Optional[str] = None
verbose: bool = False
default_repos: int = 10
max_repos: int = 100
request_timeout: int = 30
rate_limit_retries: int = 3
retry_backoff_factor: float = 0.5
def __post_init__(self) -> None:
"""Post-initialization processing."""
if self.cache_dir is None:
self.cache_dir = self._default_cache_dir()
def _default_cache_dir(self) -> Path:
"""Get default cache directory."""
return Path.home() / ".cache" / "code-pattern-search"
@classmethod
def from_env(cls) -> "Config":
"""Create configuration from environment variables."""
cache_dir = os.getenv("CPS_CACHE_DIR")
cache_ttl = os.getenv("CPS_CACHE_TTL")
return cls(
cache_dir=Path(cache_dir) if cache_dir else None,
cache_ttl=int(cache_ttl) if cache_ttl else 3600,
token=os.getenv("GITHUB_TOKEN"),
)
def get_cache_dir(self) -> Path:
"""Get the cache directory, creating it if necessary."""
if self.cache_dir:
self.cache_dir.mkdir(parents=True, exist_ok=True)
return self.cache_dir
default_dir = self._default_cache_dir()
default_dir.mkdir(parents=True, exist_ok=True)
return default_dir