[package]
name = "television"
version = "0.14.1"
edition = "2024"
description = "A portable and hackable fuzzy finder for the terminal"
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",
]
exclude = ["website", ".github", "apt", "website", "assets"]
rust-version = "1.90"
build = "build.rs"

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

[dependencies]
anyhow = "1.0"
base64 = "0.22"
directories = "6.0"
devicons = "0.6"
tokio = { version = "1.48", 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"
parking_lot = "0.12"
nucleo = "0.5"
toml = "0.8"
lazy-regex = { version = "3.4", features = ["lite"], default-features = false }
ansi-to-tui = "7.0"
walkdir = "2.5"
string_pipeline = "0.13"
ureq = "3.0"
serde_json = "1.0"
colored = "3.0"
serde_with = "3.13"
which = "8.0"
clap_complete = "4.5"
rayon = "1.11"
smallvec = "1.15"
fast-strip-ansi = "0.11"


# 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"
portable-pty = "0.9.0"
vt100 = "0.15"


[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 = "release"
opt-level = 3
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"

[package.metadata.deb]
maintainer = "Alexandre Pasmantier <alex.pasmant@gmail.com>"
copyright = "Copyright 2025 Alexandre Pasmantier <alex.pasmant@gmail.com>"
extended-description = """\
Television is a portable and hackable fuzzy finder for the terminal.

It lets you search in real time through any kind of data source (called "channels") such as:

    files and directories
    code
    notes
    processes
    git repositories
    environment variables
    docker containers
    ...and much more


with support for previewing results, customizable actions and keybindings, and integration with your favorite
shell and editor.
"""
section = "utils"
priority = "optional"
depends = "$auto"
assets = [
  [
    "target/release/tv",
    "usr/bin/",
    "755",
  ],
  { source = "man/tv.1", dest = "usr/share/man/man1/", mode = "644" },
]
