26 lines
1.5 KiB
Markdown
26 lines
1.5 KiB
Markdown
# Architecture
|
|
|
|
The updater is split by responsibility rather than by framework or class hierarchy.
|
|
|
|
- `octo_updater.py` — executable entry point only.
|
|
- `ui.py` — Tk presentation and user interaction.
|
|
- `config.py` — application paths and atomic configuration persistence.
|
|
- `net.py` — HTTPS validation and secure URL opening.
|
|
- `torrent.py` — torrent parsing, selection, verification, aria2 synchronization, and update workers.
|
|
- `client.py` — WoW client inspection, locale/config patching, tweaks, and client-specific transformations.
|
|
- `mods.py` — mod and addon catalogs, release lookup, installation, and removal.
|
|
- `platform_ops.py` — operating-system operations such as directory links, folder opening, DPI, Defender, process launching, and display APIs.
|
|
- `app_log.py` — the small thread-safe application log channel shared by workers and the UI.
|
|
|
|
## Dependency rules
|
|
|
|
`ui.py` may depend on the domain modules. Domain modules must not import `ui.py`.
|
|
|
|
`platform_ops.py` contains OS-specific process/API behavior and must not depend on Tk.
|
|
|
|
`net.py` contains generic network policy and must not contain WoW, torrent, mod, or UI policy.
|
|
|
|
`client.py`, `torrent.py`, and `mods.py` expose ordinary functions/data and do not require the Tk application to be running.
|
|
|
|
No platform class hierarchy, factories, dependency-injection container, repository layer, or plugin framework is used. New abstractions should only be introduced when a concrete requirement requires them.
|