Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
108 lines (101 loc) · 3.93 KB
/
Copy pathCargo.toml
File metadata and controls
108 lines (101 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[package]
name = "winmedic"
version = "0.12.0"
edition = "2024"
# Verified against the locked dependency tree: edition 2024 itself needs 1.85,
# but egui/eframe raises the floor to 1.95. CI enforces this exact version in
# the `msrv` job so the two can never drift apart.
rust-version = "1.95"
build = "build.rs"
authors = ["Ammar <https://github.com/SecretLUL>"]
description = "High-performance Windows Self-Healing & Diagnostic GUI in Rust"
readme = "README.md"
license = "GPL-3.0-only"
keywords = ["windows", "diagnostics", "repair", "gui", "egui"]
categories = ["gui", "system-administration"]
[lib]
name = "winmedic"
path = "src/lib.rs"
[[bin]]
name = "winmedic"
path = "src/main.rs"
# Its tests live in the library. The test executable of the binary carries the
# binary's Administrator manifest (build.rs), so it would not start unelevated.
test = false
[dependencies]
async-trait = "0.1"
tokio = { version = "1.40", features = ["full"] }
tokio-util = "0.7"
clap = { version = "4.5", features = ["derive"] }
# Only the boot time is read (to notice a restart between two runs), so only
# the `system` half of the crate is built.
sysinfo = { version = "0.39", default-features = false, features = ["system"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 = "0.11"
chrono = { version = "0.4", features = ["serde"] }
winreg = "0.56"
anyhow = "1.0"
thiserror = "2.0"
colored = "3.0"
regex = "1.11"
dirs = "7.0"
windows-sys = { version = "0.61", features = [
"Win32_Devices_DeviceAndDriverInstallation",
"Win32_Foundation",
"Win32_Globalization",
"Win32_Security",
"Win32_Security_Authorization",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Console",
"Win32_System_Diagnostics_Debug",
"Win32_System_JobObjects",
"Win32_System_LibraryLoader",
"Win32_System_Registry",
"Win32_System_SystemInformation",
"Win32_System_Threading",
"Win32_UI_Shell",
"Win32_UI_WindowsAndMessaging",
] }
# The desktop front end. Default features are off because most of them are for
# platforms WinMedic does not target: `wayland` and `x11` are Linux display
# servers, `web_screen_reader` is for the wasm build. What is left is the wgpu
# renderer without the graphics APIs it brings by default (`wgpu` below picks
# one), the bundled fonts, AccessKit for screen readers, and `persistence` so
# the window comes back where the user left it.
eframe = { version = "0.37", default-features = false, features = [
"accesskit",
"default_fonts",
"persistence",
"wgpu_no_default_features",
] }
# The one graphics API the window draws with: Direct3D 12, which every Windows
# 10 and 11 has, together with WARP, its software renderer for a PC whose
# graphics driver offers none (see `gui::renderer`). Here only to switch that
# backend on, so it must be the wgpu eframe uses: raise the two together. A
# test fails when they part.
wgpu = { version = "30", default-features = false, features = ["dx12"] }
# Waits for wgpu's adapters and the window's device, which `gui::renderer`
# makes before the window opens: the crate eframe waits for them with.
pollster = "1"
# The window's handle, which its taskbar button is addressed by
# (`gui::taskbar`). eframe hands it out through this crate's trait without
# re-exporting it; the crate is in the tree already, through eframe.
raw-window-handle = "0.6"
[build-dependencies]
winresource = "0.1"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
# A check or repair that panics is reported as failed and the window stays: the
# engine runs each in a task of its own and catches its panic, which an
# aborting build cannot (#224). It costs 4.2 MB (12.4 to 16.5 MB for 0.11.0).
panic = "unwind"
# Line tables, in winmedic.pdb beside the binary, not in it: the release
# workflow keeps the PDB, which turns the offsets in a crash log back into
# functions and lines. The binary stays the size it was.
debug = "line-tables-only"
[dev-dependencies]
egui_kittest = "0.37.0"