[package]
name = "television"
version = "0.11.9"
edition = "2021"
description = "A cross-platform, fast and extensible general purpose fuzzy finder TUI."
license = "MIT"
authors = ["Alexandre Pasmantier <alex.pasmant@gmail.com>"]
repository = "https://github.com/alexpasmantier/television"
homepage = "https://github.com/alexpasmantier/television"
keywords = ["search", "fuzzy", "preview", "tui", "terminal"]
categories = [
  "command-line-utilities",
  "command-line-interface",
  "concurrency",
  "development-tools",
]
include = [
  "LICENSE",
  "README.md",
  "themes/**/*.toml",
  "television/**",
  ".config/config.toml",
  "cable",
  "build.rs",
  "man",
]
rust-version = "1.83"
build = "build.rs"

[lib]
path = "television/lib.rs"

[dependencies]
television-derive = { path = "television-derive", version = "0.0.26" }

anyhow = "1.0"
base64 = "0.22.1"
directories = "6.0"
devicons = "0.6"
tokio = { version = "1.44", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rustc-hash = "2.1"
unicode-width = "0.2"
clap = { version = "4.5", features = ["derive", "cargo", "string"] }
serde = { version = "1.0", features = ["derive"] }
ratatui = { version = "0.29", features = ["serde", "macros"] }
better-panic = "0.3"
signal-hook = "0.3"
human-panic = "2.0"
ignore = "0.4"
strum = { version = "0.26", features = ["derive"] }
regex = "1.11"
parking_lot = "0.12"
nom = "7.1"
thiserror = "2.0"
simdutf8 = { version = "0.1", optional = true }
smallvec = { version = "1.13", features = ["const_generics"] }
gag = "1.0"
nucleo = "0.5"
toml = "0.8"
image = "0.25"
syntect = { package = "syntect", version = "5.2", default-features = false }
bat = { package = "bat", version = "0.25", default-features = false }


# target specific dependencies
[target.'cfg(target_os = "macos")'.dependencies]
crossterm = { version = "0.28.1", features = ["serde", "use-dev-tty"] }

[target.'cfg(not(target_os = "macos"))'.dependencies]
crossterm = { version = "0.28", features = ["serde"] }

[target.'cfg(windows)'.dependencies]
winapi-util = "0.1.9"
clipboard-win = "5.4.0"


[dev-dependencies]
criterion = { version = "0.5", features = ["async_tokio"] }
tempfile = "3.16.0"

[features]
simd = ["dep:simdutf8"]
zero-copy = []
# Use fancy-regex for aarch64 Linux
fancy = ["syntect/regex-fancy", "bat/regex-fancy"]
# Use oniguruma for other platforms
onig = ["syntect/regex-onig", "bat/regex-onig"]
default = ["zero-copy", "simd", "onig"]


[build-dependencies]
clap = { version = "4.5", features = ["derive", "cargo"] }
clap_mangen = "0.2.26"


[[bin]]
bench = false
path = "television/main.rs"
name = "tv"

[[bench]]
name = "main"
harness = false


[profile.staging]
inherits = "dev"
opt-level = 3
debug = true
lto = false

[profile.profiling]
inherits = "release"
debug = true


[profile.release]
codegen-units = 1
lto = "fat"

[profile.deb]
inherits = "release"
debug = false

[lints]
workspace = true

[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }

must_use_candidate = "allow"
too_many_lines = "allow"
missing_panics_doc = "allow"
missing_errors_doc = "allow"
module_name_repetitions = "allow"
cast_precision_loss = "allow"
map_unwrap_or = "allow"
return_self_not_must_use = "allow"
uninlined_format_args = "allow"
similar_names = "allow"
float_cmp = "allow"
implicit_hasher = "allow"
wildcard_imports = "allow"
from_iter_instead_of_collect = "allow"
