diff --git a/Makefile b/Makefile index 50d5fe2..a0f0623 100644 --- a/Makefile +++ b/Makefile @@ -11,9 +11,6 @@ build: # Target to run the server container using the host network run: build docker run -it --rm \ - -e SERVER_WS_URI=${SERVER_WS_URI} \ - -e SERVER_API_URL=${SERVER_API_URL} \ - -e CLIENT_API_URL=${CLIENT_API_URL} \ - -v $(pwd)/data:/data \ + -v "$(pwd)/data":/data \ --network=host \ $(CLIENT_IMAGE) diff --git a/app/client.py b/app/client.py index 9cd942c..f7d1f0a 100644 --- a/app/client.py +++ b/app/client.py @@ -30,6 +30,8 @@ if not app_conf.get("nickname"): app_conf.set("nickname", generated_nickname) NICKNAME = app_conf.get("nickname") + +print(app_conf) # ---------------------------- # Dictionary mapping command names (strings) to local client functions diff --git a/app/config.py b/app/config.py index f26afe6..2763d1c 100644 --- a/app/config.py +++ b/app/config.py @@ -50,7 +50,7 @@ class Config: except IOError as e: print(f"Error saving config file {self.file_path}: {e}") except TypeError as e: - print(f"Error serializing config data to JSON: {e}. Ensure all values are JSON serializable.") + print(f"Error serializing config data to JSON: {e}. Ensure all values are JSON serializable.") def get(self, key, default=None): """ @@ -89,6 +89,22 @@ class Config: else: print(f"Warning: Key '{key}' not found in config.") + def __str__(self): + """ + Returns a neat, formatted string representation of all configuration + key-value pairs. This method is automatically called when the object + is converted to a string (e.g., by print()). + """ + if not self._config_data: + return "\n--- Configuration is Empty ---\n" + + output = ["\n--- Current Configuration ---"] + max_key_len = max(len(key) for key in self._config_data) + for key, value in self._config_data.items(): + output.append(f"{key.ljust(max_key_len)} : {json.dumps(value, indent=None)}") + output.append("-----------------------------\n") + return "\n".join(output) + def __getattr__(self, name): """ Allows accessing configuration values using attribute notation (e.g., config.my_key). @@ -108,7 +124,7 @@ class Config: try: return self.__getattribute__(name) except AttributeError: - raise AttributeError(f"'Config' object has no attribute '{name}' and key '{name}' not found in config.") + raise AttributeError(f"'Config' object has no attribute '{name}' and key '{name}' not found in config.") def __setattr__(self, name, value): """ @@ -136,4 +152,4 @@ class Config: self.delete(name) else: # Fallback for standard attributes - super().__delattr__(name) \ No newline at end of file + super().__delattr__(name)