249 lines
9.3 KiB
TOML
249 lines
9.3 KiB
TOML
[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/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_utils = { path = "./packages/utils" }
|
|
|
|
# # ============= TAURI ============= # #
|
|
# tauri uses latest crates.io rc channel
|
|
tauri = { version = "2.0", features = [
|
|
"rustls-tls",
|
|
"tracing",
|
|
"specta",
|
|
"uuid",
|
|
"protocol-asset"
|
|
] }
|
|
|
|
# tauri-build is the codegen utility for our tauri buildscript.
|
|
tauri-build = { version = "2.0" }
|
|
# tauri-plugin-shell adds a bridge for opening urls and paths in the frontend.
|
|
tauri-plugin-shell = { version = "2.0" }
|
|
# tauri-plugin-window-state saves the window position and size to be restored.
|
|
tauri-plugin-window-state = { version = "2.0" }
|
|
# tauri-plugin-single-instance ensures that only one instance of the app is running.
|
|
tauri-plugin-single-instance = { version = "2.0" }
|
|
# tauri-plugin-clipboard-manager adds a bridge for reading/writing to the clipboard.
|
|
tauri-plugin-clipboard-manager = { version = "2.0" }
|
|
# tauri-plugin-updater allows for us to use it's functionality for in-app updates.
|
|
tauri-plugin-updater = { version = "2.0" }
|
|
# tauri-plugin-dialog adds a bridge for opening file manager and message dialogs.
|
|
tauri-plugin-dialog = { version = "2.0" }
|
|
# tauri-plugin-deep-link adds a way to handle custom uri schemes (onelauncher://)
|
|
tauri-plugin-deep-link = { version = "2.0" }
|
|
|
|
# # ============= CORE ============= # #
|
|
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" }
|
|
# core utilities for minecraft and mod management with pulseflow apis
|
|
interpulse = { version = "=1.2.0", 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" }
|
|
serde_repr = { version = "0.1" }
|
|
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.1" }
|
|
|
|
# # ============= 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" }
|
|
murmur2 = { version = "0.1.0" }
|
|
md5 = { version = "0.7.0" }
|
|
bytes = { version = "1.7" }
|
|
|
|
# # ============= UTILITY ============= # #
|
|
async-channel = { version = "2.3" }
|
|
mimalloc = { version = "0.1" }
|
|
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" }
|
|
dotenvy = { git = "https://github.com/allan2/dotenvy/", rev = "db0d6aa8fc8d1b0ddbfe94b5c833372e463eb1c5" }
|
|
# https://github.com/tauri-apps/tauri/blob/dev/crates/tauri/Cargo.toml#L102
|
|
webkit2gtk = { version = "=2.0.1", features = [ "v2_40" ] }
|
|
|
|
[workspace.lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
pedantic = { level = "warn", priority = -1 }
|
|
correctness = { level = "warn", priority = -1 }
|
|
perf = { level = "warn", priority = -1 }
|
|
style = { level = "warn", priority = -1 }
|
|
suspicious = { level = "warn", priority = -1 }
|
|
complexity = { level = "warn", priority = -1 }
|
|
nursery = { level = "warn", priority = -1 }
|
|
unnecessary_cast = "warn"
|
|
cast_lossless = "warn"
|
|
dbg_macro = "warn"
|
|
deprecated_cfg_attr = "warn"
|
|
separated_literal_suffix = "warn"
|
|
missing_errors_doc = "allow"
|
|
future_not_send = "allow"
|
|
module_name_repetitions = "allow"
|
|
struct_field_names = "allow"
|
|
cast_precision_loss = "allow"
|
|
missing_panics_doc = "allow"
|
|
significant_drop_tightening = "allow" # tmp
|
|
needless_return = "allow"
|
|
|
|
[workspace.lints.rust]
|
|
unused_qualifications = "warn"
|
|
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
trivial_casts = "warn"
|
|
trivial_numeric_casts = "warn"
|
|
unused_allocation = "warn"
|
|
unused_import_braces = "warn"
|
|
deprecated = "warn"
|
|
deprecated_in_future = "forbid"
|
|
unused_must_use = "deny"
|
|
|
|
[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
|