fif 0.8.0

A command-line tool for detecting and optionally correcting files with incorrect extensions.
Documentation
[package]
name = "fif"
description = "A command-line tool for detecting and optionally correcting files with incorrect extensions."
version = "0.8.0"
authors = ["Lynnesbian <lynne@bune.city>"]
edition = "2021"
license = "GPL-3.0-or-later"
rust-version = "1.85.0"
repository = "https://gitlab.com/Lynnesbian/fif"
readme = "README.md"
keywords = ["mime", "mimetype", "utilities", "tools"]
categories = ["command-line-utilities"]
exclude = [".idea/", "*.toml", "!Cargo.toml", "*.sh", "*.py", "*.yml", "*.md", ".mailmap", "pkg/"]

[badges]
maintenance = { status = "experimental" }

[features]
default = ["multi-threaded", "json"]
multi-threaded = ["rayon", "num_cpus"]
infer-backend = ["infer"]
xdg-mime-backend = ["xdg-mime"]
json = ["serde", "serde_json"]

[lints.clippy]
nursery = { level = "warn", priority = -1 }
perf = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
complexity = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
style = { level = "warn", priority = -1 }
float_cmp_const = "warn"
lossy_float_literal = "warn"
multiple_inherent_impl = "warn"
redundant_closure_for_method_calls = "allow" # the alternative is often much more verbose
shadow_unrelated = "allow" # sometimes things that seem unrelated are actually related ;)
option_if_let_else = "allow" # the suggested code is usually harder to read than the original
multiple-crate-versions = "allow" # this doesn't actually trip right now, but it's not something i would want CI to fail over
must_use_candidate = "allow" # useless
missing_panics_doc = "allow" # the docs are just for me, fif isn't really intended to be used as a library, so this is unneeded
missing_errors_doc = "allow" # ditto
doc_markdown = "allow" # way too many false positives

[dependencies]
walkdir = "2.4.0"
log = "0.4.14"
mime = "0.3.16"
mime_guess = { package = "new_mime_guess", version = "4.0.0" }
snailquote = "0.3.0"
rayon = { version = "1.5.0", optional = true }
exitcode = "1.1.2"
cfg-if = "1.0.0"
itertools = "0.14.0"
serde = { version = "1.0", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }
num_cpus = { version = "1.13.0", optional = true }
parking_lot = "0.12.0"
smartstring = "1"
maplit = "1.0.2"

[target.'cfg(not(unix))'.dependencies]
xdg-mime = { version = "0.4.0", optional = true }
infer = "0.19.0"

[target.'cfg(unix)'.dependencies]
xdg-mime = "0.4.0"
infer = { version = "0.19.0", optional = true }

[dependencies.clap]
version = "4.6.0"
default-features = false
features = ["wrap_help", "color", "derive", "std", "unicode"]

[dependencies.env_logger]
version = "0.11.9"
default-features = false
features = ["color", "auto-color"]

[dev-dependencies]
tempfile = "3.2.0"
rand = "0.10.0"
assert_cmd = "2.0.17"
regex = { version = "1.12.3", default-features = false, features = ["std"] }

[profile.release]
lto = "thin"

# optimise dependencies, even when producing debug and test builds
[profile.dev.package."*"]
opt-level = 3

[profile.test.package."*"]
opt-level = 3

[package.metadata]
msrv = "1.85.0"