Dieser Commit ist enthalten in:
Claude Project Manager
2025-07-09 22:10:42 +02:00
Commit 4dab418f2f
73 geänderte Dateien mit 16938 neuen und 0 gelöschten Zeilen

113
gui/config.py Normale Datei
Datei anzeigen

@ -0,0 +1,113 @@
"""
Configuration for GUI refactoring
Manages feature flags and refactoring settings
"""
import os
import json
from pathlib import Path
from utils.logger import logger
class RefactoringConfig:
"""Manages refactoring feature flags"""
CONFIG_FILE = "refactoring_config.json"
DEFAULT_FLAGS = {
'USE_GITEA_HANDLER': True, # Enable for Progress Bar support
'USE_PROCESS_HANDLER': True, # Enable for better logging
'USE_PROJECT_HANDLER': False,
'USE_UI_HELPERS': False,
'ENABLE_DEBUG_LOGGING': False,
'FORCE_ORIGINAL_IMPLEMENTATION': False # Emergency override
}
def __init__(self):
self.config_path = Path.home() / ".claude_project_manager" / self.CONFIG_FILE
self.flags = self.DEFAULT_FLAGS.copy()
self._load_config()
self._check_env_overrides()
def _load_config(self):
"""Load configuration from file"""
try:
if self.config_path.exists():
with open(self.config_path, 'r') as f:
loaded_flags = json.load(f)
# Only update known flags
for key, value in loaded_flags.items():
if key in self.flags:
self.flags[key] = value
logger.info(f"Loaded refactoring flag: {key} = {value}")
except Exception as e:
logger.error(f"Failed to load refactoring config: {e}")
def _check_env_overrides(self):
"""Check for environment variable overrides"""
# Global override
if os.getenv('CPM_USE_NEW_HANDLERS'):
logger.info("Enabling all refactored handlers via environment variable")
for key in ['USE_GITEA_HANDLER', 'USE_PROCESS_HANDLER',
'USE_PROJECT_HANDLER', 'USE_UI_HELPERS']:
self.flags[key] = True
# Individual overrides
for flag in self.flags:
env_var = f"CPM_{flag}"
if os.getenv(env_var):
value = os.getenv(env_var).lower() in ('true', '1', 'yes')
self.flags[flag] = value
logger.info(f"Override from env: {flag} = {value}")
def save_config(self):
"""Save current configuration to file"""
try:
self.config_path.parent.mkdir(parents=True, exist_ok=True)
with open(self.config_path, 'w') as f:
json.dump(self.flags, f, indent=2)
logger.info(f"Saved refactoring config to {self.config_path}")
except Exception as e:
logger.error(f"Failed to save refactoring config: {e}")
def get(self, flag_name: str, default=None):
"""Get a flag value"""
return self.flags.get(flag_name, default)
def set(self, flag_name: str, value: bool):
"""Set a flag value"""
if flag_name in self.flags:
self.flags[flag_name] = value
logger.info(f"Set refactoring flag: {flag_name} = {value}")
else:
logger.warning(f"Unknown refactoring flag: {flag_name}")
def enable_handler(self, handler_name: str):
"""Enable a specific handler"""
# Map handler names to flags
handler_map = {
'gitea': 'USE_GITEA_HANDLER',
'process': 'USE_PROCESS_HANDLER',
'project': 'USE_PROJECT_HANDLER',
'ui': 'USE_UI_HELPERS' # Note: not _HANDLER suffix
}
flag_name = handler_map.get(handler_name.lower())
if flag_name and flag_name in self.flags:
self.set(flag_name, True)
else:
logger.warning(f"Unknown handler: {handler_name}")
def disable_all(self):
"""Disable all refactoring features"""
for flag in self.flags:
if flag.startswith('USE_'):
self.flags[flag] = False
logger.info("All refactoring features disabled")
def get_status(self):
"""Get status of all flags"""
return {
"config_file": str(self.config_path),
"flags": self.flags.copy()
}
# Global instance
refactoring_config = RefactoringConfig()