[workspace]
members = [
"src/app",
"src/domain",
"src/infra",
"src/ui",
]
resolver = "3"
[workspace.package]
version = "3.0.1"
edition = "2024"
rust-version = "1.98"
license = "MIT"
repository = "https://github.com/riii111/sabiql"
[workspace.dependencies]
sabiql-domain = { path = "src/domain", version = "3.0.1" }
sabiql-app = { path = "src/app", version = "3.0.1" }
sabiql-infra = { path = "src/infra", version = "3.0.1" }
sabiql-ui = { path = "src/ui", version = "3.0.1" }
arboard = "3"
async-trait = "0.1"
clap = { version = "4", features = ["derive"] }
color-eyre = "0.6"
crossterm = { version = "0.29", features = ["event-stream"] }
csv = "1"
dirs = "5"
dotenvy = "0.15"
futures = "0.3"
insta = "1"
lru = "0.18"
libc = "0.2"
mockall = "0.13"
nucleo-matcher = "0.3"
quick-xml = { version = "0.38", features = ["async-tokio"] }
ratatui = "0.30"
rstest = "0.19"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
self_update = { version = "0.44", default-features = false, features = ["archive-tar", "archive-zip", "compression-flate2", "ureq", "rustls"] }
tempfile = "3"
thiserror = "2"
tokio = { version = "1", features = ["sync", "time", "io-util", "process", "rt-multi-thread", "macros", "fs"] }
tokio-util = "0.7"
toml = "0.8"
unicode-casefold = "0.2"
unicode-segmentation = "1"
unicode-width = "0.2"
urlencoding = "2"
url = "2"
uuid = { version = "1", features = ["v4", "v5"] }
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_Security",
"Win32_Security_Authorization",
"Win32_Storage_FileSystem",
"Win32_System_Threading",
] }
[package]
name = "sabiql"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
description = "Fast, safe-by-design, Vim-first DB TUI with ER diagrams"
license.workspace = true
repository.workspace = true
homepage = "https://github.com/riii111/sabiql"
readme = "README.md"
keywords = ["postgresql", "mysql", "sqlite", "tui", "database"]
categories = ["command-line-utilities", "database"]
[dependencies]
crossterm.workspace = true
tokio.workspace = true
color-eyre.workspace = true
clap.workspace = true
dotenvy.workspace = true
self_update = { workspace = true, optional = true }
sabiql-app.workspace = true
sabiql-domain.workspace = true
sabiql-infra.workspace = true
sabiql-ui.workspace = true
[features]
default = []
self-update = ["dep:self_update"]
[dev-dependencies]
sabiql-domain.workspace = true
sabiql-app = { workspace = true, features = ["test-support"] }
sabiql-infra = { workspace = true, features = ["test-support"] }
sabiql-ui = { workspace = true, features = ["test-support"] }
ratatui.workspace = true
insta.workspace = true
tempfile.workspace = true
tokio = { workspace = true, features = ["test-util"] }
[lints]
workspace = true
[profile.release]
lto = true
codegen-units = 1
[workspace.lints.rust]
redundant_imports = "deny"
unreachable_pub = "deny"
[workspace.lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
must_use_candidate = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
doc_markdown = "allow"
similar_names = "allow"
too_many_lines = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
cast_precision_loss = "allow"
cast_lossless = "allow"
items_after_statements = "allow"
needless_pass_by_value = "allow"
unused_self = "allow"
implicit_hasher = "allow"
match_wildcard_for_single_variants = "allow"
struct_field_names = "allow"
missing_const_for_fn = "allow"
significant_drop_tightening = "allow"
option_if_let_else = "allow"
future_not_send = "allow"
branches_sharing_code = "allow"
iter_with_drain = "allow"
collection_is_never_read = "allow"
used_underscore_binding = "allow"
naive_bytecount = "allow"
absolute_paths = "warn"
dbg_macro = "deny"
exit = "deny"
get_unwrap = "deny"
mem_forget = "deny"
todo = "deny"
print_stdout = "deny"
print_stderr = "deny"
allow_attributes_without_reason = "deny"