Files
ClaudeProjectManager-main/gui/config.py
Claude Project Manager ec92da8a64 Initial commit
2025-07-07 22:11:38 +02:00

113 Zeilen
4.1 KiB
Python

"""
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()