refactor: move manager classes from core to managers module

* Move ConfigManager, SettingsManager, and FileManager from setup/core to setup/managers with new init.py for cleaner organization.
* Update SettingsManager with enhanced metadata handling methods and installation detection utilities.
This commit is contained in:
Andrew Low
2025-07-22 18:11:18 +08:00
parent df94650bef
commit 2db7c80eb1
4 changed files with 48 additions and 7 deletions

View File

@@ -0,0 +1,9 @@
from .config_manager import ConfigManager
from .settings_manager import SettingsManager
from .file_manager import FileManager
__all__ = [
'ConfigManager',
'SettingsManager',
'FileManager'
]

View File

@@ -1,6 +1,7 @@
""" """
Settings management for SuperClaude installation system Settings management for SuperClaude installation system
Handles settings.json manipulation with deep merge and backup Handles settings.json migration to the new SuperClaude metadata json file
Allows for manipulation of these json files with deep merge and backup
""" """
import json import json
@@ -96,7 +97,31 @@ class SettingsManager:
json.dump(metadata, f, indent=2, ensure_ascii=False, sort_keys=True) json.dump(metadata, f, indent=2, ensure_ascii=False, sort_keys=True)
except IOError as e: except IOError as e:
raise ValueError(f"Could not save metadata to {self.metadata_file}: {e}") raise ValueError(f"Could not save metadata to {self.metadata_file}: {e}")
def merge_metadata(self, modifications: Dict[str, Any]) -> Dict[str, Any]:
"""
Deep merge modifications into existing settings
Args:
modifications: Settings modifications to merge
Returns:
Merged settings dict
"""
existing = self.load_metadata()
return self._deep_merge(existing, modifications)
def update_metadata(self, modifications: Dict[str, Any]) -> None:
"""
Update settings with modifications
Args:
modifications: Settings modifications to apply
create_backup: Whether to create backup before updating
"""
merged = self.merge_metadata(modifications)
self.save_metadata(merged)
def migrate_superclaude_data(self) -> bool: def migrate_superclaude_data(self) -> bool:
""" """
Migrate SuperClaude-specific data from settings.json to metadata file Migrate SuperClaude-specific data from settings.json to metadata file
@@ -322,16 +347,23 @@ class SettingsManager:
self.save_metadata(metadata) self.save_metadata(metadata)
def get_framework_version(self) -> Optional[str]: def check_installation_exists(self) -> bool:
""" """
Get SuperClaude framework version from metadata Get SuperClaude framework version from metadata
Returns: Returns:
Version string or None if not set Version string or None if not set
""" """
metadata = self.load_metadata() return self.metadata_file.exists()
framework = metadata.get("framework", {})
return framework.get("version") def check_v2_installation_exists(self) -> bool:
"""
Get SuperClaude framework version from metadata
Returns:
Version string or None if not set
"""
return self.settings_file.exists()
def get_metadata_setting(self, key_path: str, default: Any = None) -> Any: def get_metadata_setting(self, key_path: str, default: Any = None) -> Any:
""" """
@@ -480,4 +512,4 @@ class SettingsManager:
return True return True
except (json.JSONDecodeError, IOError): except (json.JSONDecodeError, IOError):
return False return False