[package]
name = "television"
version = "0.9.1"
edition = "2021"
description = "The revolution will be televised."
license = "MIT"
authors = ["Alexandre Pasmantier <alex.pasmant@gmail.com>"]
build = "build.rs"
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",
  "crates/television/**/*.rs",
  "build.rs",
  ".config/config.toml",
  "cable",
]
rust-version = "1.81"

[workspace]
resolver = "2"
members = ["crates/television-*"]

[workspace.package]
edition = "2021"
description = "The revolution will be televised."
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",
  "crates/television/**/*.rs",
  "build.rs",
  "shell/**/*.sh",
]
rust-version = "1.81"
readme = "README.md"

[workspace.dependencies]
directories = "5.0.1"
color-eyre = "0.6.3"
lazy_static = "1.5.0"
tokio = { version = "1.41.1", features = ["full"] }
tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "serde"] }
rustc-hash = "2.1.0"
syntect = "5.2.0"
unicode-width = "0.2.0"
clap = { version = "4.5.20", features = ["derive", "cargo", "string"] }
serde = { version = "1.0.214", features = ["derive"] }
toml = "0.8.19"
ratatui = { version = "0.29.0", features = ["serde", "macros"] }


[dependencies]
# local dependencies
television-fuzzy = { path = "crates/television-fuzzy", version = "0.0.20" }
television-derive = { path = "crates/television-derive", version = "0.0.20" }
television-screen = { path = "crates/television-screen", version = "0.0.20" }
television-channels = { path = "crates/television-channels", version = "0.0.20" }
television-previewers = { path = "crates/television-previewers", version = "0.0.20" }
television-utils = { path = "crates/television-utils", version = "0.0.20" }

# workspace dependencies
directories = { workspace = true }
color-eyre = { workspace = true }
lazy_static = { workspace = true }
tokio = { workspace = true, features = ["full"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter", "serde"] }
rustc-hash = { workspace = true }
syntect = { workspace = true }
unicode-width = { workspace = true }
clap = { workspace = true, features = ["derive", "cargo", "string"] }
serde = { workspace = true, features = ["derive"] }
toml = { workspace = true }
ratatui = { workspace = true, features = ["serde", "macros"] }

# external dependencies
better-panic = "0.3.0"
config = "0.14.0"
crossterm = { version = "0.28.1", features = ["serde"] }
signal-hook = "0.3.17"
human-panic = "2.0.2"
copypasta = "0.10.1"

[dev-dependencies]
criterion = "0.5.1"
devicons = "0.6.11"

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

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

[build-dependencies]
vergen-gix = { version = "1.0.0", features = ["build", "cargo", "rustc"] }

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


[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"
