Initial commit
Dieser Commit ist enthalten in:
113
gui/config.py
Normale Datei
113
gui/config.py
Normale Datei
@ -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()
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren