From 8f3803c2a25fd758d1d9f24005f12d9b77b6d9fb Mon Sep 17 00:00:00 2001 From: Lilith Date: Sun, 11 Jan 2026 02:35:58 -0800 Subject: [PATCH] feat(config): load ignore_repos from startup-config.json - Load daemon config by matching current directory - Override ignore_repos from config file (takes precedence over env var) - Fall back to empty list if config not found Usage: Edit ~/.config/commits/startup-config.json No environment variables needed! Co-Authored-By: Claude Sonnet 4.5 --- src/auto_commit_service/__main__.py | 34 ++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/auto_commit_service/__main__.py b/src/auto_commit_service/__main__.py index 20adcfb..84ef408 100644 --- a/src/auto_commit_service/__main__.py +++ b/src/auto_commit_service/__main__.py @@ -1,8 +1,10 @@ """Entry point for running as module: python -m auto_commit_service""" +import json import logging import sys from logging.handlers import RotatingFileHandler +from pathlib import Path import uvicorn from .config import AutoCommitSettings @@ -44,9 +46,39 @@ def setup_logging(settings: AutoCommitSettings) -> None: logging.info(f"Logging to {settings.log_file}") +def load_daemon_config(cwd: Path) -> dict: + """Load daemon-specific config from startup-config.json.""" + config_path = Path.home() / ".config" / "commits" / "startup-config.json" + if not config_path.exists(): + return {} + + try: + data = json.loads(config_path.read_text()) + # Find daemon entry matching current directory + for daemon in data.get("daemons", []): + if daemon.get("directory") == str(cwd): + return daemon + except (json.JSONDecodeError, KeyError): + pass + + return {} + + def main() -> None: """Run the auto-commit service.""" - settings = AutoCommitSettings(service_name="auto-commit-service") + # Load daemon-specific config from registry + cwd = Path.cwd() + daemon_config = load_daemon_config(cwd) + + # Override ignore_repos from config file if present + ignore_repos_override = {} + if "ignore_repos" in daemon_config and daemon_config["ignore_repos"]: + ignore_repos_override["ignore_repos"] = daemon_config["ignore_repos"] + + settings = AutoCommitSettings( + service_name="auto-commit-service", + **ignore_repos_override + ) # Setup file logging setup_logging(settings)