| 104 | } |
| 105 | |
| 106 | def load(self) -> None: |
| 107 | if os.path.isfile(self.settings_filename): |
| 108 | self.settings = self.default_settings |
| 109 | |
| 110 | # If the settings file exists, load it |
| 111 | try: |
| 112 | with open(self.settings_filename, "r") as settings_file: |
| 113 | self.settings = json.load(settings_file) |
| 114 | |
| 115 | # If it's missing any fields, add them from the default settings |
| 116 | for key in self.default_settings: |
| 117 | if key not in self.settings: |
| 118 | self.settings[key] = self.default_settings[key] |
| 119 | elif key == "updater_latest_version" and version.parse( |
| 120 | get_version() |
| 121 | ) > version.parse(self.get(key)): |
| 122 | self.set(key, get_version()) |
| 123 | |
| 124 | except Exception as e: # noqa: BLE001 |
| 125 | log.error(f"Error loading settings, falling back to default {e}") |
| 126 | self.settings = self.default_settings |
| 127 | |
| 128 | else: |
| 129 | # Save with default settings |
| 130 | log.info("Settings file doesn't exist, starting with default") |
| 131 | self.settings = self.default_settings |
| 132 | |
| 133 | self.save() |
| 134 | |
| 135 | def save(self) -> None: |
| 136 | self.settings_filename.parent.mkdir(parents=True, exist_ok=True) |