summaryrefslogtreecommitdiff
path: root/py_modules/lsfg_vk/configuration.py
diff options
context:
space:
mode:
Diffstat (limited to 'py_modules/lsfg_vk/configuration.py')
-rw-r--r--py_modules/lsfg_vk/configuration.py76
1 files changed, 1 insertions, 75 deletions
diff --git a/py_modules/lsfg_vk/configuration.py b/py_modules/lsfg_vk/configuration.py
index b61a06d..9f8b028 100644
--- a/py_modules/lsfg_vk/configuration.py
+++ b/py_modules/lsfg_vk/configuration.py
@@ -22,9 +22,7 @@ class ConfigurationService(BaseService):
ConfigurationResponse with current configuration or error
"""
try:
- # Get TOML configuration (with defaults if file doesn't exist)
if not self.config_file_path.exists():
- # Return default configuration with DLL detection if file doesn't exist
from .dll_detection import DllDetectionService
dll_service = DllDetectionService(self.log)
toml_config = ConfigurationManager.get_defaults_with_dll_detection(dll_service)
@@ -32,7 +30,6 @@ class ConfigurationService(BaseService):
content = self.config_file_path.read_text(encoding='utf-8')
toml_config = ConfigurationManager.parse_toml_content(content)
- # Get script environment variables (if script exists)
script_values = {}
if self.lsfg_script_path.exists():
try:
@@ -42,7 +39,6 @@ class ConfigurationService(BaseService):
except Exception as e:
self.log.warning(f"Failed to parse launch script: {str(e)}")
- # Merge TOML config with script values
config = ConfigurationManager.merge_config_with_script(toml_config, script_values)
return self._success_response(ConfigurationResponse, config=config)
@@ -54,7 +50,6 @@ class ConfigurationService(BaseService):
except Exception as e:
error_msg = f"Error parsing config file: {str(e)}"
self.log.error(error_msg)
- # Return defaults with DLL detection if parsing fails
from .dll_detection import DllDetectionService
dll_service = DllDetectionService(self.log)
config = ConfigurationManager.get_defaults_with_dll_detection(dll_service)
@@ -75,7 +70,6 @@ class ConfigurationService(BaseService):
profile_data = self._get_profile_data()
current_profile = profile_data["current_profile"]
- # Update the current profile's config
return self.update_profile_config(current_profile, config)
except (OSError, IOError) as e:
@@ -97,10 +91,8 @@ class ConfigurationService(BaseService):
ConfigurationResponse with success status
"""
try:
- # Create configuration from keyword arguments using generated function
config = ConfigurationManager.create_config_from_args(**kwargs)
- # Update using the new profile-aware method
return self.update_config_from_dict(config)
except (OSError, IOError) as e:
@@ -112,45 +104,6 @@ class ConfigurationService(BaseService):
self.log.error(error_msg)
return self._error_response(ConfigurationResponse, str(e), config=None)
- def update_dll_path(self, dll_path: str) -> ConfigurationResponse:
- """Update just the DLL path in the configuration
-
- Args:
- dll_path: Path to the Lossless.dll file
-
- Returns:
- ConfigurationResponse with success status
- """
- try:
- profile_data = self._get_profile_data()
-
- # Update global config (DLL path is global)
- profile_data["global_config"]["dll"] = dll_path
-
- # Also update current profile's config for backward compatibility
- current_profile = profile_data["current_profile"]
- from .config_schema_generated import DLL
- profile_data["profiles"][current_profile][DLL] = dll_path
-
- # Save to file
- self._save_profile_data(profile_data)
-
- # Update launch script
- script_result = self.update_lsfg_script_from_profile_data(profile_data)
- if not script_result["success"]:
- self.log.warning(f"Failed to update launch script: {script_result['error']}")
-
- self.log.info(f"Updated DLL path in lsfg configuration: '{dll_path}'")
-
- return self._success_response(ConfigurationResponse,
- f"DLL path updated to: {dll_path}",
- config=profile_data["profiles"][current_profile])
-
- except Exception as e:
- error_msg = f"Error updating DLL path: {str(e)}"
- self.log.error(error_msg)
- return self._error_response(ConfigurationResponse, str(e), config=None)
-
def update_lsfg_script(self, config: ConfigurationData) -> ConfigurationResponse:
"""Update the ~/lsfg launch script with current configuration
@@ -163,7 +116,6 @@ class ConfigurationService(BaseService):
try:
script_content = self._generate_script_content(config)
- # Write the script file
self._write_file(self.lsfg_script_path, script_content, 0o755)
self.log.info(f"Updated lsfg launch script at {self.lsfg_script_path}")
@@ -189,14 +141,12 @@ class ConfigurationService(BaseService):
lines = [
"#!/bin/bash",
"# lsfg-vk launch script generated by decky-lossless-scaling-vk plugin",
- "# This script sets up the environment for lsfg-vk to work with the plugin configuration"
+ "# This script sets up the environment for lsfg-vk to work with the plugin configuration",
]
- # Use auto-generated script generation logic
generate_script_lines = get_script_generation_logic()
lines.extend(generate_script_lines(config))
- # Always add the LSFG_PROCESS export and execution line
lines.extend([
"export LSFG_PROCESS=decky-lsfg-vk",
'exec "$@"'
@@ -216,23 +166,18 @@ class ConfigurationService(BaseService):
current_profile = profile_data["current_profile"]
config = profile_data["profiles"].get(current_profile, ConfigurationManager.get_defaults())
- # Merge global config with profile config
merged_config = dict(config)
for field_name, value in profile_data["global_config"].items():
merged_config[field_name] = value
lines = [
"#!/bin/bash",
- "# lsfg-vk launch script generated by decky-lossless-scaling-vk plugin",
f"# Current profile: {current_profile}",
- "# This script sets up the environment for lsfg-vk to work with the plugin configuration"
]
- # Use auto-generated script generation logic
generate_script_lines = get_script_generation_logic()
lines.extend(generate_script_lines(merged_config))
- # Export LSFG_PROCESS with current profile name
lines.extend([
f"export LSFG_PROCESS={current_profile}",
'exec "$@"'
@@ -243,7 +188,6 @@ class ConfigurationService(BaseService):
def _get_profile_data(self) -> ProfileData:
"""Get current profile data from config file"""
if not self.config_file_path.exists():
- # Return default profile structure if file doesn't exist
from .dll_detection import DllDetectionService
dll_service = DllDetectionService(self.log)
default_config = ConfigurationManager.get_defaults_with_dll_detection(dll_service)
@@ -263,13 +207,10 @@ class ConfigurationService(BaseService):
"""Save profile data to config file"""
toml_content = ConfigurationManager.generate_toml_content_multi_profile(profile_data)
- # Ensure config directory exists
self.config_dir.mkdir(parents=True, exist_ok=True)
- # Write the updated config directly to preserve inode for file watchers
self._write_file(self.config_file_path, toml_content, 0o644)
- # Profile management methods
def get_profiles(self) -> ProfilesResponse:
"""Get list of all profiles and current profile
@@ -303,14 +244,11 @@ class ConfigurationService(BaseService):
try:
profile_data = self._get_profile_data()
- # Use current profile as source if not specified
if not source_profile:
source_profile = profile_data["current_profile"]
- # Create the new profile
new_profile_data = ConfigurationManager.create_profile(profile_data, profile_name, source_profile)
- # Save to file
self._save_profile_data(new_profile_data)
self.log.info(f"Created profile '{profile_name}' from '{source_profile}'")
@@ -340,13 +278,10 @@ class ConfigurationService(BaseService):
try:
profile_data = self._get_profile_data()
- # Delete the profile
new_profile_data = ConfigurationManager.delete_profile(profile_data, profile_name)
- # Save to file
self._save_profile_data(new_profile_data)
- # Update launch script if current profile changed
script_result = self.update_lsfg_script_from_profile_data(new_profile_data)
if not script_result["success"]:
self.log.warning(f"Failed to update launch script: {script_result['error']}")
@@ -379,13 +314,10 @@ class ConfigurationService(BaseService):
try:
profile_data = self._get_profile_data()
- # Rename the profile
new_profile_data = ConfigurationManager.rename_profile(profile_data, old_name, new_name)
- # Save to file
self._save_profile_data(new_profile_data)
- # Update launch script if current profile changed
script_result = self.update_lsfg_script_from_profile_data(new_profile_data)
if not script_result["success"]:
self.log.warning(f"Failed to update launch script: {script_result['error']}")
@@ -417,13 +349,10 @@ class ConfigurationService(BaseService):
try:
profile_data = self._get_profile_data()
- # Set current profile
new_profile_data = ConfigurationManager.set_current_profile(profile_data, profile_name)
- # Save to file
self._save_profile_data(new_profile_data)
- # Update launch script with new current profile
script_result = self.update_lsfg_script_from_profile_data(new_profile_data)
if not script_result["success"]:
self.log.warning(f"Failed to update launch script: {script_result['error']}")
@@ -469,16 +398,13 @@ class ConfigurationService(BaseService):
if field_name in config:
profile_data["global_config"][field_name] = config[field_name]
- # Save to file
self._save_profile_data(profile_data)
- # Update launch script if this is the current profile
if profile_name == profile_data["current_profile"]:
script_result = self.update_lsfg_script_from_profile_data(profile_data)
if not script_result["success"]:
self.log.warning(f"Failed to update launch script: {script_result['error']}")
- # Log with dynamic field listing
field_values = ", ".join(f"{k}={repr(v)}" for k, v in config.items())
self.log.info(f"Updated profile '{profile_name}' configuration: {field_values}")