[package]
name = "broot"
version = "1.56.3"
authors = ["dystroy <denys.seguret@gmail.com>"]
repository = "https://github.com/Canop/broot"
homepage = "https://dystroy.org/broot"
documentation = "https://dystroy.org/broot"
description = "File browser and launcher"
edition = "2021"
keywords = ["cli", "fuzzy", "tree", "search", "file"]
license = "MIT"
categories = ["command-line-utilities"]
readme = "README.md"
build = "build.rs"
rust-version = "1.83"
exclude = ["website", "broot*.zip"]

[features]
default = []
clipboard = ["terminal-clipboard"]
kitty-csi-check = ["xterm-query"]

[dependencies]
base64 = "0.22"
bet = "1.1"
char_reader = "0.1"
chrono = "0.4"
clap = { version = "4.4", features = ["derive", "cargo"] }
clap-help = "1.4"
cli-log = "2.1"
crokey = "1.3"
custom_error = "1.6"
deser-hjson = "2.2.3"
directories = "4.0"
file-size = "1.0.3"
flate2 = "1.0"
flex-grow = "0.1"
git2 = { version = "0.20", default-features = false } # waiting for a good pure-rust alternative
glob = "0.3"
id-arena = "2.2.1"
image = "=0.25.6" # later versions ask for rust 1.85+
zune-core = "0.4.12"
zune-image = "0.4.15"
include_dir = "0.7"
lazy-regex = "3.5"
libc = "0.2"
lru = "0.16.3"
memmap2 = "0.9"
notify = "8.0"
once_cell = "1.18" # waiting for https://github.com/rust-lang/rust/issues/109736
opener = "0.8"
pathdiff = "0.2"
phf = { version = "0.13", features = ["macros"] }
rand = "0.8"
rayon = "1.9"
resvg = "0.45"
rustc-hash = "2"
secular = { version = "1.0", features = ["normalization", "bmp"] }
serde = { version = "1.0", features = ["derive"] }
smallvec = "1.15" # version 2 is still alpha
splitty = "1.0.2"
strict = "0.2"
syntect = { package = "syntect-no-panic", version = "6.0", default-features = false, features = ["default-fancy"] } # see https://github.com/Canop/broot/pull/968
tempfile = "3.2"
termimad = "0.34"
terminal-clipboard = { version = "0.4.1", optional = true }
terminal-light = "1.8"
toml = "0.9"
umask = "2.1.0"
unicode-width = "0.2"
vte = "0.15"
which = "=4.4.0" # following versions ask for a a more recent rustc
xterm-query = { version = "0.5", optional = true }

[dev-dependencies]
glassbench = "0.4.4"

[target.'cfg(any(target_os = "windows", all(unix, not(any(target_os = "ios", target_os = "android")))))'.dependencies]
trash = "=5.2.2" # later versions ask for rust 1.85+

[target.'cfg(any(target_os = "linux", target_os = "windows", target_os = "macos"))'.dependencies]
lfs-core = "0.17.0"

[target.'cfg(target_family = "unix")'.dependencies]
uzers = "0.12"

[target.'cfg(target_os = "windows")'.dependencies]
is_executable = "1.0.1"

[build-dependencies]
clap = { version = "4.4", features = ["derive", "cargo"] }
clap_complete = "4.4"
clap_mangen = "0.2.12"

[profile.dev]
debug = false

[profile.release]
debug = false
lto = "fat"
codegen-units = 1 # this removes a few hundred bytes from the final exec size
strip = "symbols"

[[bench]]
name = "fuzzy"
harness = false
[[bench]]
name = "toks"
harness = false
[[bench]]
name = "composite"
harness = false
[[bench]]
name = "path_normalization"
harness = false

[patch.crates-io]
# bet = { path = "../bet" }
# clap-help = { path = "../clap-help" }
# coolor = { path = "../coolor" }
# crokey = { path = "../crokey" }
# crossterm = { path = "../crossterm-rs/crossterm" }
# csv2svg = { path = "../csv2svg" }
# deser-hjson = { path = "../deser-hjson" }
# glassbench = { path = "../glassbench" }
# lazy-regex = { path = "../lazy-regex" }
# lfs-core = { path = "../lfs-core" }
# minimad = { path = "../minimad" }
# secular = { path = "../secular", features=["normalization"] }
# syntect-no-panic = { path = "../syntect" }
# terminal-clipboard = { path = "../terminal-clipboard" }
# umask = { path = "../umask" }
# cli-log = { path = "../cli-log" }
# lazy-regex-proc_macros = { path = "../lazy-regex/src/proc_macros" }
# strict = { path = "../strict" }
# termimad = { path = "../termimad" }
# terminal-light = { path = "../terminal-light" }
# xterm-query = { path = "../xterm-query" }

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }_{ version }{ archive-suffix }"
bin-dir = "{ target }/{ bin }{ binary-ext }"
pkg-fmt = "zip"
