Coverage for .claude/hooks/moai/lib/hook_config.py: 0.00%
41 statements
« prev ^ index » next coverage.py v7.11.3, created at 2025-11-19 08:00 +0900
« prev ^ index » next coverage.py v7.11.3, created at 2025-11-19 08:00 +0900
1#!/usr/bin/env python3
2# Hook Configuration Utilities
4"""
5Hook-related configuration and utility functions
6- Load Hook timeout configuration
7- Check graceful degradation settings
8"""
10import json
11import logging
12from pathlib import Path
14logger = logging.getLogger(__name__)
17def load_hook_timeout() -> int:
18 """
19 Load Hook timeout configuration from .moai/config/config.json
21 Returns:
22 int: timeout value (milliseconds), returns default 5000 if configuration not found
23 """
24 try:
25 config_path = Path(".moai/config/config.json")
26 if not config_path.exists():
27 return 5000 # Default value
29 with open(config_path, 'r', encoding='utf-8') as f:
30 config = json.load(f)
32 # Get timeout_ms value from hooks section
33 hooks_config = config.get("hooks", {})
34 timeout_ms = hooks_config.get("timeout_ms", 5000)
36 return int(timeout_ms)
37 except (json.JSONDecodeError, FileNotFoundError, KeyError, ValueError):
38 logger.warning("Failed to load hook timeout from config, using default 5000ms")
39 return 5000
42def get_graceful_degradation() -> bool:
43 """
44 Load graceful_degradation configuration from .moai/config/config.json
46 Returns:
47 bool: graceful_degradation configuration value, returns default True if configuration not found
48 """
49 try:
50 config_path = Path(".moai/config/config.json")
51 if not config_path.exists():
52 return True # Default value
54 with open(config_path, 'r', encoding='utf-8') as f:
55 config = json.load(f)
57 # Get graceful_degradation value from hooks section
58 hooks_config = config.get("hooks", {})
59 return hooks_config.get("graceful_degradation", True)
60 except (json.JSONDecodeError, FileNotFoundError, KeyError):
61 logger.warning("Failed to load graceful_degradation from config, using default True")
62 return True
65def get_hook_execution_config() -> dict:
66 """
67 Load all Hook execution related configuration
69 Returns:
70 dict: Hook configuration dictionary
71 """
72 try:
73 config_path = Path(".moai/config/config.json")
74 if not config_path.exists():
75 return {
76 "timeout_ms": 5000,
77 "graceful_degradation": True
78 }
80 with open(config_path, 'r', encoding='utf-8') as f:
81 config = json.load(f)
83 hooks_config = config.get("hooks", {})
85 return {
86 "timeout_ms": hooks_config.get("timeout_ms", 5000),
87 "graceful_degradation": hooks_config.get("graceful_degradation", True)
88 }
89 except (json.JSONDecodeError, FileNotFoundError):
90 logger.warning("Failed to load hook config, using defaults")
91 return {
92 "timeout_ms": 5000,
93 "graceful_degradation": True
94 }