mirror of
https://github.com/hinto-janai/gupax.git
synced 2024-12-23 11:29:38 +00:00
3 KiB
3 KiB
Gupax source files
Structure
File/Folder | Purpose |
---|---|
about.rs |
Struct/impl for About tab |
constants.rs |
General constants needed in Gupax |
gupax.rs |
Struct/impl for Gupax tab |
main.rs |
Struct/enum/impl for App/Tab/State , init functions, main function |
node.rs |
Struct/impl for Community Nodes |
p2pool.rs |
Struct/impl for P2Pool tab |
state.rs |
Struct/impl for gupax.toml , the disk state |
status.rs |
Struct/impl for Status tab |
xmrig.rs |
Struct/impl for XMRig tab |
Bootstrap
This is how Gupax works internally when starting up, divided into 3 sections.
-
INIT
- Initialize custom console logging with
log
,env_logger
|| warn! - Initialize misc data (structs, text styles, thread count, images, etc) || panic!
- Check for admin privilege (for XMRig) || warn!
- Attempt to read
gupax.toml
|| warn!, initialize config with default options - If errors were found, pop-up window
- Initialize custom console logging with
-
AUTO
- If
auto_update
==true
, pop-up auto-updating window || info!, skip auto-update - Multi-threaded GitHub API check on Gupax -> P2Pool -> XMRig || warn!, skip auto-update
- Multi-threaded download if current version != new version || warn!, skip auto-update
- After download, atomically replace current binaries with new || warn!, skip auto-update
- Update version metadata || warn!, skip auto-update
- If
auto_select
==true
, ping community nodes and select fastest one || warn!
- If
-
MAIN
- All data must be initialized at this point, either via
gupax.toml
or default options || panic! - Start
App
frame || panic! - Write state to
gupax.toml
on user clickingSave
(after checking input for correctness) || warn! - If
ask_before_quit
==true
, check for running processes, unsaved state, and update connections before quitting - Kill processes, kill connections, exit
- All data must be initialized at this point, either via
State
Internal state is saved in the "OS data folder" as gupax.toml
, using the TOML format. If the version can't be parsed (not in the vX.X.X
or vX.X
format), the auto-updater will be skipped. If not found, a default gupax.toml
file will be created with State::default
. Gupax will panic!
if gupax.toml
has IO or parsing issues.
OS | Data Folder | Example |
---|---|---|
Windows | {FOLDERID_LocalAppData} |
C:\Users\Alice\AppData\Roaming\Gupax\gupax.toml |
macOS | $HOME /Library/Application Support |
/Users/Alice/Library/Application Support/Gupax/gupax.toml |
Linux | $XDG_DATA_HOME or $HOME /.local/share |
/home/alice/.local/share/gupax/gupax.toml |