Files
atuin-mirror/Cargo.toml

356 lines
11 KiB
TOML

[workspace]
resolver = "2"
members = ["crates/*"]
exclude = ["ui/backend"]
[workspace.package]
version = "18.22.0"
authors = ["Ellie Huxtable <ellie@atuin.sh>"]
rust-version = "1.95.0"
license = "MIT"
homepage = "https://atuin.sh"
repository = "https://github.com/atuinsh/atuin"
readme = "README.md"
[workspace.dependencies]
atuin-ai = { path = "crates/atuin-ai", version = "18.22.0", default-features = false }
atuin-client = { path = "crates/atuin-client", version = "18.22.0" }
atuin-common = { path = "crates/atuin-common", version = "18.22.0" }
atuin-daemon = { path = "crates/atuin-daemon", version = "18.22.0", default-features = false }
atuin-domain = { path = "crates/atuin-domain", version = "18.22.0" }
atuin-dotfiles = { path = "crates/atuin-dotfiles", version = "18.22.0" }
atuin-history = { path = "crates/atuin-history", version = "18.22.0" }
atuin-kv = { path = "crates/atuin-kv", version = "18.22.0" }
atuin-pty-proxy = { path = "crates/atuin-pty-proxy", version = "18.22.0", default-features = false }
atuin-scripts = { path = "crates/atuin-scripts", version = "18.22.0" }
atuin-server = { path = "crates/atuin-server", version = "18.22.0" }
atuin-vt100 = "0.19"
ansi-to-tui = { version = "8", default-features = false }
arboard = { version = "3", default-features = false }
# held at 0.5: rusty_paserk 0.5.0 pins argon2 0.5; bumping would add a 2nd copy
argon2 = "0.5"
async-stream = "0.3"
async-trait = "0.1"
axoupdater = "0.10"
axum = "0.8"
# held at 0.22: sqlx-postgres 0.9 pins base64 0.22; bumping would add a 2nd copy
base64 = "0.22"
bytesize = { version = "2", features = ["serde"] }
chrono = "0.4"
chrono-humanize = "0.2"
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
clap_complete_nushell = "4"
colored = "2"
config = { version = "0.15", default-features = false, features = ["toml"] }
crossterm = "0.29"
crypto_secretbox = "0.1"
daemonix = "0.1"
dashmap = "6"
derive_more = {
version = "2",
features = [
"add",
"add_assign",
"as_ref",
"deref",
"display",
"error",
"from",
"into",
"debug",
],
}
directories = "6"
divan = "0.1"
# easy-cast 0.5.5+ raises its MSRV to 1.96.
#
# The assert_nonzero feature patches a bug fixed in:
# https://github.com/kas-gui/easy-cast/pull/52
# which was released in 0.6.0
easy-cast = { version = "0.5", features = ["assert_nonzero"] }
enum_dispatch = "0.3"
eventsource-stream = "0.2"
eye_declare = "0.7"
eye_declare_engine = { version = "0.7", features = ["test-util"] }
eyre = "0.6"
fjall = { version = "3" }
frizbee = "0.13"
fs-err = "3"
futures = "0.3"
futures-util = "0.3"
getrandom = "0.4"
glob-match = "0.2"
http = "1"
humantime = "2"
hyper-util = "0.1"
imara-diff = "0.2"
indicatif = "0.18"
interim = { version = "0.2", features = ["time_0_3"] }
itertools = "0.15"
lasso = { version = "0.7", features = ["multi-threaded"] }
libc = "0.2"
# Version range mirrors sqlx-sqlite's so cargo unifies both to a single
# `links = "sqlite3"` package (one bundled SQLite).
libsqlite3-sys = ">=0.30.1, <0.38.0"
listenfd = "1"
locked-tripwire = "0.1"
memchr = "2"
metrics = "0.24"
metrics-exporter-prometheus = { version = "0.18", default-features = false }
minijinja = "2"
minspan = "0.1"
norm = { version = "0.1", features = ["fzf-v2"] }
notify = "8"
num-traits = "0.2"
opentelemetry = "0.32"
opentelemetry-otlp = "0.32"
opentelemetry_sdk = "0.32"
palette = { version = "0.7", features = ["serializing"] }
parking_lot = "0.12"
portable-pty = "0.9"
pretty_assertions = "1"
proptest = "1"
prost = "0.14"
prost-types = "0.14"
protox = "0.9"
pulldown-cmark = "0.13"
rand = { version = "0.8", features = ["std"] }
ratatui = "0.30"
ratatui-core = "0.1"
regex = "1"
reqwest = {
version = "0.13",
default-features = false,
features = ["json", "native-tls", "stream", "gzip", "zstd"],
}
reqwest-middleware = "0.5"
rmcp = { version = "3", default-features = false, features = ["server", "transport-io"] }
rmp = "0.8"
rpassword = "7"
rstest = "0.27"
runtime-format = "0.1"
rustix = { version = "1", features = ["process", "fs", "pty", "termios", "stdio"] }
rusty_paserk = { version = "0.5", default-features = false, features = ["v4", "serde"] }
# rusty_paserk 0.5.0 (latest) requires rusty_paseto 0.8.0 unfortunately
rusty_paseto = { version = "0.8", default-features = false }
semver = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_regex = "1"
serde_with = "3"
shellexpand = "3"
shlex = "2"
# held at 0.3: crossterm 0.29 pins signal-hook 0.3; bumping would add a 2nd copy
signal-hook = "0.3"
sql-builder = "3"
sqlx = { version = "0.9", features = ["runtime-tokio", "time", "uuid"] }
strum = { version = "0.27", features = ["strum_macros"] }
strum_macros = "0.28"
sysinfo = "0.39"
tempfile = { version = "3" }
thiserror = "2"
time = { version = "0.3", features = ["serde-human-readable", "macros", "local-offset"] }
tiny-bip39 = "2"
tracing = { version = "0.1", features = ["release_max_level_debug"] }
tokio = { version = "1", features = ["full"] }
tokio-stream = { version = "0.1", features = ["net"] }
tokio-util = { version = "0.7", features = ["rt"] }
toml = "1"
toml_edit = "0.25"
tonic = "0.14"
tonic-prost = "0.14"
tonic-prost-build = "0.14"
tower = "0.5"
# held at 0.6: reqwest 0.13 pins tower-http 0.6; bumping would add a 2nd copy
tower-http = { version = "0.6", features = ["trace"] }
tracing-appender = "0.2"
tracing-futures = { version = "0.2", features = ["futures-03"] }
tracing-opentelemetry = "0.33"
tracing-subscriber = {
version = "0.3",
features = ["ansi", "fmt", "registry", "env-filter", "json"],
}
tracing-tree = "0.4"
tree-sitter = "0.27"
tree-sitter-bash = "0.25"
tree-sitter-fish = "3"
tree-sitter-powershell = "0.26"
tui-textarea-2 = "0.13"
typed-builder = "0.23"
unicode-segmentation = "1"
unicode-width = "0.2"
url = { version = "2", features = ["serde"] }
# Explicitly 1.6 is necessary because the v7 UUID was only added then.
uuid = { version = "1.6", features = ["v4", "v7", "serde"] }
whoami = "2"
windows-sys = {
version = "0.61",
features = [
"Win32_System_Console",
"Win32_System_Threading",
"Win32_Foundation",
"Win32_Storage_FileSystem",
],
}
wiremock = "0.6"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
# held at 0.11: 0.12 pulls hashlink 0.12 (a 2nd copy vs sqlx's 0.11) + an encoding_rs/multiversion subtree
yaml-rust2 = "0.11"
zeroize = "1"
# held at 0.13: compression-codecs (via reqwest) pins zstd 0.13; bumping would add a 2nd copy
zstd = "0.13"
# The profile that 'cargo dist' will build with
[profile.dist]
inherits = "release"
lto = "fat"
strip = "symbols"
codegen-units = 1
[profile.profiling]
inherits = "dist"
debug = true
strip = "none"
split-debuginfo = "packed"
# dist inherits fat LTO + codegen-units = 1, which inline aggressively across
# crates and collapse the call tree in a profiler. Override both to keep frames
# distinct. For a finer knob, lower LLVM's inline threshold at build time with
# RUSTFLAGS="-C llvm-args=--inline-threshold=25" (0 = flattest).
lto = false
codegen-units = 256
[profile.profiling-traced]
inherits = "dist"
debug-assertions = true
[patch.crates-io]
# axoasset (axoupdater's HTTP layer) hardcodes reqwest's "default-tls" feature,
# which would force the rustls/aws-lc-rs backend into our builds via feature
# unification, alongside the native-tls backend the workspace actually uses.
# The vendored copy (from the atuinsh/axoasset fork, branch remote-tls-feature,
# managed by vendor/vendor.sh) makes the TLS backend selectable so reqwest
# follows the workspace configuration. A path is used rather than the fork's
# git URL because git-sourced patches break crates.io publishing. Drop this
# once the change is upstreamed and released.
axoasset = { path = "vendor/axoasset" }
[workspace.lints.clippy]
as_ptr_cast_mut = "warn"
assigning_clones = "warn"
borrow_as_ptr = "warn"
branches_sharing_code = "warn"
case_sensitive_file_extension_comparisons = "warn"
cast_lossless = "warn"
cast_possible_truncation = "warn"
cast_possible_wrap = "warn"
cast_sign_loss = "warn"
# TODO(markovejnovic): This could be enabled in a separate PR.
#cast_precision_loss = "warn"
clear_with_drain = "warn"
cloned_instead_of_copied = "warn"
collapsible_else_if = "warn"
collection_is_never_read = "warn"
dbg_macro = "warn"
debug_assert_with_mut_call = "warn"
derive_partial_eq_without_eq = "warn"
elidable_lifetime_names = "warn"
empty_line_after_outer_attr = "warn"
explicit_deref_methods = "warn"
explicit_into_iter_loop = "warn"
explicit_iter_loop = "warn"
fallible_impl_from = "warn"
filter_map_next = "warn"
flat_map_option = "warn"
float_cmp = "warn"
float_cmp_const = "warn"
fn_params_excessive_bools = "warn"
fn_to_numeric_cast_any = "warn"
if_not_else = "warn"
implicit_clone = "warn"
# Going through `Display` is slower than shadowing `to_string`, as it avoids
# dynamic dispatch.
inherent_to_string_shadow_display = "allow"
index_refutable_slice = "warn"
iter_not_returning_iterator = "warn"
iter_on_single_items = "warn"
iter_with_drain = "warn"
large_stack_arrays = "warn"
large_types_passed_by_value = "warn"
lossy_float_literal = "warn"
manual_assert = "warn"
manual_ilog2 = "warn"
manual_instant_elapsed = "warn"
manual_is_power_of_two = "warn"
manual_is_variant_and = "warn"
manual_let_else = "warn"
match_wildcard_for_single_variants = "warn"
maybe_infinite_iter = "warn"
mem_forget = "warn"
mismatching_type_param_order = "warn"
multiple_unsafe_ops_per_block = "warn"
must_use_candidate = "warn"
mut_mut = "warn"
needless_collect = "warn"
needless_continue = "warn"
needless_pass_by_ref_mut = "warn"
needless_pass_by_value = "warn"
needless_raw_string_hashes = "warn"
no_effect_underscore_binding = "warn"
non_std_lazy_statics = "warn"
nonminimal_bool = "warn"
option_as_ref_cloned = "warn"
path_buf_push_overwrite = "warn"
ptr_as_ptr = "warn"
range_minus_one = "warn"
range_plus_one = "warn"
rc_mutex = "warn"
read_zero_byte_vec = "warn"
redundant_clone = "warn"
redundant_pub_crate = "warn"
ref_option = "warn"
ref_option_ref = "warn"
return_self_not_must_use = "warn"
same_functions_in_if_condition = "warn"
same_name_method = "warn"
search_is_some = "warn"
semicolon_if_nothing_returned = "warn"
set_contains_or_insert = "warn"
significant_drop_in_scrutinee = "warn"
significant_drop_tightening = "warn"
single_char_pattern = "warn"
single_option_map = "warn"
stable_sort_primitive = "warn"
str_split_at_newline = "warn"
string_lit_as_bytes = "warn"
suspicious_operation_groupings = "warn"
trailing_empty_array = "warn"
trait_duplication_in_bounds = "warn"
trivial_regex = "warn"
trivially_copy_pass_by_ref = "warn"
tuple_array_conversions = "warn"
type_repetition_in_bounds = "warn"
undocumented_unsafe_blocks = "warn"
unimplemented = "warn"
uninlined_format_args = "warn"
unnecessary_box_returns = "warn"
unnecessary_join = "warn"
unnecessary_literal_bound = "warn"
unnecessary_struct_initialization = "warn"
unnecessary_trailing_comma = "warn"
unnecessary_wraps = "warn"
unnested_or_patterns = "warn"
unreadable_literal = "warn"
unused_async = "warn"
unused_peekable = "warn"
unused_rounding = "warn"
unused_self = "warn"
use_self = "warn"
used_underscore_binding = "warn"
used_underscore_items = "warn"
useless_let_if_seq = "warn"
verbose_bit_mask = "warn"
while_float = "warn"
wildcard_imports = "warn"