-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Cargo.toml
262 lines (248 loc) · 9.82 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
258
259
260
261
262
[package]
name = "helgobox"
version = "2.16.14"
authors = ["Benjamin Klum <[email protected]>"]
edition = "2021"
build = "build.rs"
license = "GPL-3.0"
rust-version = "1.81.0"
publish = false
[features]
default = []
# Builds ReaLearn together with the Playtime Clip Engine. This should only be enabled if you have access to the
# private playtime-clip-engine repository, otherwise the build will fail.
playtime = ["dep:playtime-clip-engine"]
# Activates license checks for Playtime Clip Engine. If not enabled, license checks will always fail.
licensing = ["playtime", "playtime-clip-engine/licensing"]
# Enables a bunch of features that need the egui user interface framework to work.
egui = ["dep:baseview", "dep:egui-baseview", "dep:egui", "dep:egui_extras", "pot-browser"]
# Regenerate bindings (for dialog resource IDs and EEL functions)
generate = []
[dependencies]
# Own
base.workspace = true
reaper-rx.workspace = true
reaper-high.workspace = true
reaper-medium.workspace = true
reaper-common-types = { workspace = true, features = ["color-macros", "palette"] }
reaper-low.workspace = true
reaper-macros.workspace = true
swell-ui.workspace = true
rx-util.workspace = true
pot.workspace = true
helgobox-api.workspace = true
# In future (when helgoboss-learn has matured), this will become a crates.io dependency
helgoboss-learn.workspace = true
helgoboss-midi.workspace = true
helgoboss-license-api.workspace = true
playtime-api.workspace = true
playtime-clip-engine = { workspace = true, optional = true }
# 3rd-party
# For easier error handling
anyhow.workspace = true
# For being able to (de)serialize using FromStr and Display
serde_with.workspace = true
# For panicking when accessing something from the wrong thread
fragile.workspace = true
c_str_macro = "1.0.2"
# For acting as DAW plug-in
vst = "0.3.0"
rxrust.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_repr.workspace = true
derive_more.workspace = true
lazycell.workspace = true
num_enum.workspace = true
crossbeam-channel.workspace = true
scopeguard.workspace = true
uuid = { version = "1.6.1", features = ["v4", "serde"] }
# New logging (for clip matrix)
tracing.workspace = true
tracing-core.workspace = true
tracing-subscriber = { version = "0.3.7", features = ["env-filter"] }
# For interacting with the OS clipboard
arboard = "3.3.0"
once_cell.workspace = true
# For being able to exclude fields from the derived Debug implementation
derivative.workspace = true
chrono.workspace = true
smallvec = "1.7.0"
backtrace = "0.3.74"
regex.workspace = true
enum-map.workspace = true
# For generating controller file names from controller names
slug.workspace = true
# For generating random session IDs
nanoid.workspace = true
# For ReaLearn's servers
futures.workspace = true
tokio.workspace = true
tokio-stream.workspace = true
tower = "0.4"
# For ReaLearn's http server (used for projection)
# We can't update to 0.7 because of tonic not yet using http 1 (https://github.com/hyperium/tonic/issues/1579)
axum = { version = "0.6.18", features = ["ws"] }
# We can't update to 0.6.0 as long as axum is still on 0.6
axum-server = { version = "0.5.1", features = ["tls-rustls"] }
# We can't update to 0.5.0 as long as axum is still on 0.6
tower-http = { version = "0.4.2", features = ["cors"] }
# For ReaLearn's gRPC server
tonic.workspace = true
prost.workspace = true
# For generating projection QR code
qrcode = { version = "0.14.1" }
# For rendering projection QR code to PNG
image = { workspace = true, features = ["png"] }
# For generating self-signed certificate for projection web server
rcgen = "0.12.0"
# For showing different ways of connecting to this computer (projection feature)
dns-lookup = "2.0.4"
hostname = "^0.3"
# For rendering projection setup HTML page template
askama = "0.12.1"
# For persisting app configuration
serde_ini = "0.2.0"
# For opening projection setup page and companion app in local browser
webbrowser = "0.8.12"
# For writing generated projection setup page to disk
tempfile.workspace = true
# For adding firewall rules
runas = "1.1.0"
# For building URls, e.g. companion web app URL
url.workspace = true
# For grouping mappings by virtual control elements and grouping outgoing OSC messages by device
itertools.workspace = true
# For being able to configure logging via environment variable RUST_LOG
env_logger = "0.10.1"
# To open user guide in local PDF app
open.workspace = true
# In projection server, we must be able to handle controller IDs with special characters
percent-encoding = "2.1.0"
# For comparing ReaLearn versions in order to determine if preset migration is necessary
semver.workspace = true
# Maybe better asynchronous channel than in futures or tokio (basically the async version of crossbeam)
async-channel = "2.1.1"
# For displaying snapshot sizes
bytesize.workspace = true
# For OSC
rosc.workspace = true
# For letting the user edit advanced mapping settings
edit = { git = "https://github.com/helgoboss/edit", branch = "realearn" }
# For parsing/formatting advanced mapping settings
serde_yaml = "0.8.17"
# For parsing hexadecimal data notation to byte vector (for system-exclusive lifecycle MIDI messages)
hex.workspace = true
# For evaluation of <Dynamic> formulas
fasteval = { version = "0.2.4", default-features = false }
# For wildcard support when using "By name" selector
wildmatch.workspace = true
# For creating HashSet literals for projection feedback and in unit tests
maplit = "1.0.2"
# For easier support of named virtual control elements
ascii.workspace = true
# For using bit flags in the reaper-rs API.
enumflags2.workspace = true
# For detecting undesired (de)allocation in real-time threads.
helgobox-allocator.workspace = true
# For being able to cleanly implement targets in separate files without needing to resort to dynamic dispatch.
enum_dispatch.workspace = true
# For processing mappings in user-defined order
indexmap = { workspace = true }
# For comparing floating point numbers in tests
approx.workspace = true
# For the API (ReaLearn Script) and MIDI scripts
mlua.workspace = true
# For checking if an FX has loaded a specific chunk and duplicate detection of non-primitive feedback messages
xxhash-rust.workspace = true
# For convenient converting prop key to prop enum variant
strum.workspace = true
metrics.workspace = true
metrics-exporter-prometheus = { version = "0.13.0", default-features = false }
# For parsing OSC argument value ranges
nom.workspace = true
# For obtaining dialog constants from dialog crate
helgobox-dialogs = { path = "../dialogs" }
# For being able to return iterators of different types
either.workspace = true
# For reading preset directories recursively
walkdir.workspace = true
# For egui graphics
egui-baseview = { git = "https://github.com/helgoboss/egui-baseview.git", branch = "realearn", optional = true }
baseview = { git = "https://github.com/helgoboss/baseview.git", branch = "realearn", optional = true }
egui = { workspace = true, optional = true }
egui_extras = { workspace = true, optional = true }
raw-window-handle.workspace = true
# Pot Browser
pot-browser = { workspace = true, optional = true }
# For decompressing App
zstd = "0.13.0"
tar = "0.4.40"
# For loading App
libloading.workspace = true
# For saving controller role kinds
enumset.workspace = true
# For embedding factory presets into the binary
include_dir = "0.7.3"
# For prefixing preset IDs with the user name
whoami = "1.4.1"
# For passing MIDI device inquiry replies from audio thread to main thread
tinyvec.workspace = true
# For adding toolbar items by parsing/formatting INI (hopefully gets an API soon)
rust-ini.workspace = true
# For not having to deal with non-UTF8 paths if we are sure we don't have them
camino.workspace = true
# For not having to manually implement Lua module finder trait for smart pointers
auto_impl.workspace = true
# For some color in the otherwise boring GUI
palette.workspace = true
# For parsing/formatting enum-like target values from/to a stable and ID-like representation
serde_plain.workspace = true
# For sharing variables between main thread and real-time threads
atomic.workspace = true
# For making sure that sharing global audio state uses atomics
static_assertions.workspace = true
# For Stream Deck support
streamdeck = "0.9.0"
# For Stream Deck support
ab_glyph = "0.2.29"
# For Stream Deck support
hidapi = "2.4"
# For caching button images for Stream Deck
cached.workspace = true
# For drawing knobs for Stream Deck button
imageproc.workspace = true
# For relativizing paths for Stream Deck button images
pathdiff.workspace = true
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies]
# For speech source
tts = { git = "https://github.com/helgoboss/tts-rs", branch = "helgoboss-fixes" }
[target.'cfg(windows)'.dependencies]
# For detecting the Windows version (to determine whether special characters can be displayed)
sys-info = "0.9.1"
# For converting virtual umlaut/special keys into character codes (keyboard source)
winapi = { workspace = true, features = ["winuser"] }
[target.'cfg(target_os = "macos")'.dependencies]
# For taking screenshots for docs
xcap = "0.0.13"
# For taking screenshots for docs
dirs.workspace = true
[build-dependencies]
# For making Git commit hash available to code
built = { version = "0.7.1", features = ["git2", "chrono"] }
# For generating bindings (for dialog resource IDs and EEL functions)
bindgen.workspace = true
# For compiling EEL and SWELL dialog resources
# We use a special version because of "link_lib_modifiers", which allows us to add "+whole-archive"
# in a convenient way. TODO-low-wait https://github.com/rust-lang/cc-rs/pull/671
cc = { git = "https://github.com/petrochenkov/cc-rs.git", rev = "4d52bd211aeb2b4ddccd1b9c0a0841e03aaaef7c" }
# For embedding dialog resource files on Windows
embed-resource = "2.4.1"
# For RC dialog file generation
helgobox-dialogs = { path = "../dialogs" }
[dev-dependencies]
# For the EEL memory consumption test
sysinfo = "0.30.5"
[lib]
name = "helgobox"
crate-type = ["cdylib"]