-
Notifications
You must be signed in to change notification settings - Fork 3
/
Cargo.toml
257 lines (236 loc) · 10.1 KB
/
Cargo.toml
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
[workspace]
resolver = "2" # virtual workspace resolver so we don't need a root package
members = [
"apps/testing", # onelauncher_test -- test the core crate in a cli setting
"apps/desktop", # onelauncher_gui -- the rust code for our tauri app
"packages/core", # onelauncher -- the rust core for onelauncher
"packages/macros", # onelauncher_macros -- utility procedural macros for onelauncher
"packages/gamemode", # onelauncher_gamemode -- rust wrapper for feral gamemode
"packages/prisma-cli", # onelauncher_prisma_cli -- rust wrapper for prisma cli
"packages/prisma", # onelauncher_prisma -- rust client for prisma
"packages/utils" # onelauncher_utils -- standard utilities for use within all crates
]
[workspace.package] # sets default [package] settings for workspace members
license = "GPL-3.0-only"
edition = "2021" # latest rust edition
repository = "https://github.com/Polyfrost/OneLauncher"
documentation = "https://docs.polyfrost.org/onelauncher"
readme = "README.md"
homepage = "https://polyfrost.org/projects/onelauncher"
authors = [ "Polyfrost", "Polyfrost Contributors" ]
version = "1.0.0-alpha.1" # bump this manually for now
[workspace.dependencies]
# # ============= WORKSPACE ============= # #
# best practice to define all workspace crates in the root
# even if they are not use, with no features enabled.
onelauncher = { path = "./packages/core" }
onelauncher_macros = { path = "./packages/macros" }
onelauncher_gui = { path = "./apps/desktop" }
onelauncher_test = { path = "./apps/testing" }
onelauncher_gamemode = { path = "./packages/gamemode" }
onelauncher_prisma = { path = "./packages/prisma" }
onelauncher_prisma_cli = { path = "./packages/prisma-cli" }
onelauncher_utils = { path = "./packages/utils" }
# # ============= TAURI ============= # #
# tauri uses latest crates.io rc channel
tauri = { version = "=2.0.0-rc.15", features = [
"rustls-tls",
"tracing",
"specta",
"uuid",
"protocol-asset"
] }
# tauri-build is the codegen utility for our tauri buildscript.
tauri-build = { version = "=2.0.0-rc.12" }
# tauri-plugin-shell adds a bridge for opening urls and paths in the frontend.
tauri-plugin-shell = { version = "=2.0.0-rc.3" }
# tauri-plugin-window-state saves the window position and size to be restored.
tauri-plugin-window-state = { version = "=2.0.0-rc.5" }
# tauri-plugin-single-instance ensures that only one instance of the app is running.
tauri-plugin-single-instance = { version = "=2.0.0-rc.4" }
# tauri-plugin-clipboard-manager adds a bridge for reading/writing to the clipboard.
tauri-plugin-clipboard-manager = { version = "=2.0.0-rc.4" }
# tauri-plugin-updater allows for us to use it's functionality for in-app updates.
tauri-plugin-updater = { version = "=2.0.0-rc.3" }
# tauri-plugin-dialog adds a bridge for opening file manager and message dialogs.
tauri-plugin-dialog = { version = "=2.0.0-rc.7" }
# tauri-plugin-deep-link adds a way to handle custom uri schemes (onelauncher://)
tauri-plugin-deep-link = { version = "=2.0.0-rc.6" }
# # ============= CORE ============= # #
# rspc is used as a faster and more intuitive replacement for tauri-specta
# commands/apis that don't depend on tauri. rather than using the tauri
# event and invoke apis for handling api calling, it creates a router which
# we can easily use with tanstack solid query apis.
# this means we don't have to redefine all our core apis as tauri commands.
# features: "specta2" is for using the latest v2 rc of specta.
# TODO: the api migration is blocked until rspc updates to a newer version of tauri v2.
rspc = { version = "=0.2.0", features = [ "specta2", "tracing" ] }
# specta is used as a peer dependency for tauri-specta and rspc.
# it generates rust code into other languages, in our case, typescript.
# v2 is the latest/only version, and it is updated as a release candidate
# on crates.io almost after every commit, so a git dep isn't necessary.
# features: "derive" and "function" are core apis of specta we rely on.
# the remaining features implements the specta::Type trait for their
# respective dependencies of the same name. if we add a new dependency
# and run into specta errors, adding the dependency as a feature will usually solve this.
specta = { version = "=2.0.0-rc.20", features = [
"chrono",
"uuid",
"serde",
"serde_json",
"function",
"derive",
"time"
] }
# tauri-specta is the tauri adapter for specta.
tauri-specta = { version = "=2.0.0-rc.20", features = [ "javascript", "typescript", "derive" ] }
# specta-typescript is the typescript adapter for specta.
specta-typescript = { version = "=0.0.7" }
# rspc-specta2 is the specta v2 (rc) adapter for rspc.
rspc-tauri2 = { version = "=0.0.1" }
# core utilities for minecraft and mod management with pulseflow apis
interpulse = { version = "=1.1.3", features = [ "specta" ] }
# # ============= SECURITY ============= # #
thiserror = { version = "1.0" }
anyhow = { version = "1.0" }
tracing = { version = "0.1" }
tracing-subscriber = { version = "0.3", features = [ "chrono", "env-filter" ] }
tracing-error = { version = "0.2" }
tracing-appender = { version = "0.2" }
iota_stronghold = { version = "2.1" }
zeroize = { version = "1.8", features = [ "zeroize_derive" ] }
# # ============= SERIALIZATION ============= # #
serde = { version = "1.0", features = [ "derive" ] }
serde_json = { version = "1.0" }
serde_ini = { version = "0.2" }
regex = { version = "1.10" }
url = { version = "2.5.2" }
strum = { version = "0.26", features = [ "derive" ] }
chrono = { version = "0.4", features = [ "serde" ] }
rand = { version = "0.8.5" }
byteorder = { version = "1.5.0" }
base64 = { version = "0.22" }
p256 = { version = "0.13.2", features = [ "ecdsa" ] }
uuid = { version = "1.10", features = [ "serde", "v4" ] }
toml = { version = "0.8" }
nom = { version = "7" }
# # ============= NETWORK ============= # #
reqwest = { version = "0.12", default-features = false, features = [
"json",
"stream",
"multipart",
"blocking",
"rustls-tls",
"charset",
"http2",
"macos-system-configuration",
"deflate",
"gzip",
"brotli"
] }
async-tungstenite = { version = "0.28", features = [ "tokio-runtime", "tokio-rustls-webpki-roots" ] }
webbrowser = { version = "1.0" }
# # ============= SYSTEM ============= # #
tokio = { version = "1.40", features = [ "full" ] }
tokio-stream = { version = "0.1.16", features = [ "fs" ] }
notify = { version = "6.1", default-features = false }
notify-debouncer-mini = { version = "0.4", default-features = false }
tempfile = { version = "3.12" }
dunce = { version = "1.0.5" }
zip = { version = "2.2.0" }
dirs = { version = "5.0" }
async_zip = { version = "0.0.17", features = [ "full" ] }
async-compression = { version = "0.4.12", features = [ "flate2", "tokio" ] }
flate2 = { version = "1.0" }
sha1_smol = { version = "1.0", features = [ "std" ] }
sha2 = { version = "0.10" }
bytes = { version = "1.7" }
# # ============= UTILITY ============= # #
async-channel = { version = "2.3" }
pin-project-lite = { version = "0.2" }
once_cell = { version = "1.19" }
quote = { version = "1.0" }
syn = { version = "2.0", features = [ "full" ] }
discord-rich-presence = { version = "0.2" }
winreg = { version = "0.52" }
paste = { version = "1.0" }
dashmap = { version = "6.1", features = [ "serde" ] }
lazy_static = { version = "1.5" }
indicatif = { version = "0.17" }
futures = { version = "0.3" }
async-recursion = { version = "1.1" }
sysinfo = { version = "0.31", features = [ "serde" ] }
sys-info = { version = "0.9" }
whoami = { version = "1.5" }
cocoa = { version = "0.26" }
objc = { version = "0.2" }
cc = { version = "1.1" }
libc = { version = "0.2" }
# https://github.com/tauri-apps/tauri/blob/dev/crates/tauri/Cargo.toml#L102
webkit2gtk = { version = "=2.0.1", features = [ "v2_40" ] }
[workspace.dependencies.prisma-client-rust]
git = "https://github.com/brendonovich/prisma-client-rust"
rev = "4f9ef9d38ca732162accff72b2eb684d2f120bab"
features = [
"migrations",
"specta",
"sqlite",
"sqlite-create-many",
"rspc"
]
default-features = false
[workspace.dependencies.prisma-client-rust-generator]
git = "https://github.com/brendonovich/prisma-client-rust"
rev = "4f9ef9d38ca732162accff72b2eb684d2f120bab"
features = [
"migrations",
"specta",
"sqlite",
"sqlite-create-many",
"rspc"
]
default-features = false
[patch.crates-io]
# rspc = { git = "https://github.com/oscartbeaumont/rspc", rev = "9f26d6400affdb501837cb023678268ad72feb9b" }
# rspc-tauri2 = { git = "https://github.com/specta-rs/tauri2", rev = "6b9419566e2a826fb2a62538c7647f4524ab0fea" }
[profile.dev]
# add debug symbols/logic and optimize for reduced build time (parallel)
debug = true # add debug info
opt-level = 0 # reduce optimizations
strip = "none" # don't remove debug symbols
incremental = true # enable incremental compilation
split-debuginfo = "unpacked" # unpack debug info
lto = false # disable link time optimizations, reduce compile time
codegen-units = 256 # make parallel incremental builds faster
rpath = false # disable rpath
panic = "unwind" # add unwind panic logic because some deps require it
# add debug symbols/logic and optimize for reduced build time (parallel)
[profile.dev-debug]
inherits = "dev" # extend the dev profile
split-debuginfo = "none" # don't split debug info
opt-level = 0 # reduce optimizations
debug = "full" # add full debug info
strip = "none" # don't remove debug symbols
lto = "off" # disable link time optimizations, reduce compile time
codegen-units = 256 # make parallel incremental builds faster
incremental = true # enable incremental compilation
# set the settings for build scripts and proc-macros.
[profile.dev.build-override]
opt-level = 3 # optimize build
# set the default for dependencies, except workspace members.
[profile.dev.package."*"]
opt-level = 3 # optimize build
incremental = false # disable incremental compilation
# set the default for dependencies, except workspace members.
[profile.dev-debug.package."*"]
inherits = "dev" # extend the dev profile
opt-level = 3 # optimize build
debug = "full" # add full debug info
incremental = false # disable incremental compilation
# optimize for speed and reduce size for release
[profile.release]
panic = "abort" # strip panic cleanup logic
codegen-units = 1 # compile crate one after another for better optimization
lto = true # enable link time optimization
opt-level = "s" # optimize binary
strip = true # remove debug symbols